From e77d1be53e26bb70755192054fad016d42b7f350 Mon Sep 17 00:00:00 2001 From: Cesar N <11819101+cesnietor@users.noreply.github.com> Date: Fri, 7 Jun 2024 19:00:37 -0700 Subject: [PATCH] Release v1.5.0 (#3373) update assets with latest fix Co-authored-by: cesnietor --- CHANGELOG.md | 18 +++++ web-app/build/asset-manifest.json | 74 +++++++++---------- web-app/build/index.html | 2 +- .../build/static/js/1011.13d372c8.chunk.js | 2 - .../static/js/1011.13d372c8.chunk.js.map | 1 - .../build/static/js/1011.59fa8004.chunk.js | 2 + .../static/js/1011.59fa8004.chunk.js.map | 1 + .../build/static/js/1324.62d917da.chunk.js | 2 - .../static/js/1324.62d917da.chunk.js.map | 1 - .../build/static/js/1324.cc645cb1.chunk.js | 2 + .../static/js/1324.cc645cb1.chunk.js.map | 1 + .../build/static/js/1370.a3d466ac.chunk.js | 2 + .../static/js/1370.a3d466ac.chunk.js.map | 1 + .../build/static/js/1370.adfc1682.chunk.js | 2 - .../static/js/1370.adfc1682.chunk.js.map | 1 - .../build/static/js/2166.a0f01e1a.chunk.js | 2 + .../static/js/2166.a0f01e1a.chunk.js.map | 1 + .../build/static/js/2166.bb4ae347.chunk.js | 2 - .../static/js/2166.bb4ae347.chunk.js.map | 1 - .../build/static/js/2959.c4f178f1.chunk.js | 2 - .../static/js/2959.c4f178f1.chunk.js.map | 1 - .../build/static/js/2959.f25a9ef1.chunk.js | 2 + .../static/js/2959.f25a9ef1.chunk.js.map | 1 + .../build/static/js/3527.30ec1659.chunk.js | 2 - .../static/js/3527.30ec1659.chunk.js.map | 1 - .../build/static/js/3527.b7757ae8.chunk.js | 2 + .../static/js/3527.b7757ae8.chunk.js.map | 1 + .../build/static/js/4676.578844c1.chunk.js | 2 - .../static/js/4676.578844c1.chunk.js.map | 1 - .../build/static/js/4676.8d6be1dd.chunk.js | 2 + .../static/js/4676.8d6be1dd.chunk.js.map | 1 + .../build/static/js/4705.1a1c4cd3.chunk.js | 2 + .../static/js/4705.1a1c4cd3.chunk.js.map | 1 + .../build/static/js/4705.2270c966.chunk.js | 2 - .../static/js/4705.2270c966.chunk.js.map | 1 - .../build/static/js/5851.9aeea951.chunk.js | 2 + .../static/js/5851.9aeea951.chunk.js.map | 1 + .../build/static/js/5851.9d7a7887.chunk.js | 2 - .../static/js/5851.9d7a7887.chunk.js.map | 1 - .../build/static/js/5941.4df5a08b.chunk.js | 2 - .../static/js/5941.4df5a08b.chunk.js.map | 1 - .../build/static/js/5941.c85331e3.chunk.js | 2 + .../static/js/5941.c85331e3.chunk.js.map | 1 + .../build/static/js/6065.e12fd403.chunk.js | 2 + .../static/js/6065.e12fd403.chunk.js.map | 1 + .../build/static/js/6065.f30b3ff2.chunk.js | 2 - .../static/js/6065.f30b3ff2.chunk.js.map | 1 - .../build/static/js/7774.32142847.chunk.js | 2 + .../static/js/7774.32142847.chunk.js.map | 1 + .../build/static/js/7774.4d23a595.chunk.js | 2 - .../static/js/7774.4d23a595.chunk.js.map | 1 - .../build/static/js/8311.d87242df.chunk.js | 2 + .../static/js/8311.d87242df.chunk.js.map | 1 + .../build/static/js/8789.5dfcad74.chunk.js | 2 - .../static/js/8789.5dfcad74.chunk.js.map | 1 - .../build/static/js/8789.c1e4949f.chunk.js | 2 + .../static/js/8789.c1e4949f.chunk.js.map | 1 + .../build/static/js/8821.e7fb1c57.chunk.js | 2 - .../static/js/8821.e7fb1c57.chunk.js.map | 1 - .../build/static/js/8823.034b6a8d.chunk.js | 2 - .../static/js/8823.034b6a8d.chunk.js.map | 1 - .../build/static/js/8823.5a005f09.chunk.js | 2 + .../static/js/8823.5a005f09.chunk.js.map | 1 + web-app/build/static/js/960.41c7b96c.chunk.js | 2 + .../build/static/js/960.41c7b96c.chunk.js.map | 1 + web-app/build/static/js/960.494cc9da.chunk.js | 2 - .../build/static/js/960.494cc9da.chunk.js.map | 1 - .../static/js/9652.3c40b533.chunk.js.map | 2 +- web-app/build/static/js/985.c802474d.chunk.js | 2 + .../build/static/js/985.c802474d.chunk.js.map | 1 + web-app/build/static/js/985.f5122b3c.chunk.js | 2 - .../build/static/js/985.f5122b3c.chunk.js.map | 1 - web-app/build/static/js/main.77c2c9f2.js | 3 - web-app/build/static/js/main.77c2c9f2.js.map | 1 - web-app/build/static/js/main.dd292f6d.js | 3 + ...CENSE.txt => main.dd292f6d.js.LICENSE.txt} | 0 web-app/build/static/js/main.dd292f6d.js.map | 1 + web-app/src/api/consoleApi.ts | 4 +- 78 files changed, 114 insertions(+), 96 deletions(-) delete mode 100644 web-app/build/static/js/1011.13d372c8.chunk.js delete mode 100644 web-app/build/static/js/1011.13d372c8.chunk.js.map create mode 100644 web-app/build/static/js/1011.59fa8004.chunk.js create mode 100644 web-app/build/static/js/1011.59fa8004.chunk.js.map delete mode 100644 web-app/build/static/js/1324.62d917da.chunk.js delete mode 100644 web-app/build/static/js/1324.62d917da.chunk.js.map create mode 100644 web-app/build/static/js/1324.cc645cb1.chunk.js create mode 100644 web-app/build/static/js/1324.cc645cb1.chunk.js.map create mode 100644 web-app/build/static/js/1370.a3d466ac.chunk.js create mode 100644 web-app/build/static/js/1370.a3d466ac.chunk.js.map delete mode 100644 web-app/build/static/js/1370.adfc1682.chunk.js delete mode 100644 web-app/build/static/js/1370.adfc1682.chunk.js.map create mode 100644 web-app/build/static/js/2166.a0f01e1a.chunk.js create mode 100644 web-app/build/static/js/2166.a0f01e1a.chunk.js.map delete mode 100644 web-app/build/static/js/2166.bb4ae347.chunk.js delete mode 100644 web-app/build/static/js/2166.bb4ae347.chunk.js.map delete mode 100644 web-app/build/static/js/2959.c4f178f1.chunk.js delete mode 100644 web-app/build/static/js/2959.c4f178f1.chunk.js.map create mode 100644 web-app/build/static/js/2959.f25a9ef1.chunk.js create mode 100644 web-app/build/static/js/2959.f25a9ef1.chunk.js.map delete mode 100644 web-app/build/static/js/3527.30ec1659.chunk.js delete mode 100644 web-app/build/static/js/3527.30ec1659.chunk.js.map create mode 100644 web-app/build/static/js/3527.b7757ae8.chunk.js create mode 100644 web-app/build/static/js/3527.b7757ae8.chunk.js.map delete mode 100644 web-app/build/static/js/4676.578844c1.chunk.js delete mode 100644 web-app/build/static/js/4676.578844c1.chunk.js.map create mode 100644 web-app/build/static/js/4676.8d6be1dd.chunk.js create mode 100644 web-app/build/static/js/4676.8d6be1dd.chunk.js.map create mode 100644 web-app/build/static/js/4705.1a1c4cd3.chunk.js create mode 100644 web-app/build/static/js/4705.1a1c4cd3.chunk.js.map delete mode 100644 web-app/build/static/js/4705.2270c966.chunk.js delete mode 100644 web-app/build/static/js/4705.2270c966.chunk.js.map create mode 100644 web-app/build/static/js/5851.9aeea951.chunk.js create mode 100644 web-app/build/static/js/5851.9aeea951.chunk.js.map delete mode 100644 web-app/build/static/js/5851.9d7a7887.chunk.js delete mode 100644 web-app/build/static/js/5851.9d7a7887.chunk.js.map delete mode 100644 web-app/build/static/js/5941.4df5a08b.chunk.js delete mode 100644 web-app/build/static/js/5941.4df5a08b.chunk.js.map create mode 100644 web-app/build/static/js/5941.c85331e3.chunk.js create mode 100644 web-app/build/static/js/5941.c85331e3.chunk.js.map create mode 100644 web-app/build/static/js/6065.e12fd403.chunk.js create mode 100644 web-app/build/static/js/6065.e12fd403.chunk.js.map delete mode 100644 web-app/build/static/js/6065.f30b3ff2.chunk.js delete mode 100644 web-app/build/static/js/6065.f30b3ff2.chunk.js.map create mode 100644 web-app/build/static/js/7774.32142847.chunk.js create mode 100644 web-app/build/static/js/7774.32142847.chunk.js.map delete mode 100644 web-app/build/static/js/7774.4d23a595.chunk.js delete mode 100644 web-app/build/static/js/7774.4d23a595.chunk.js.map create mode 100644 web-app/build/static/js/8311.d87242df.chunk.js create mode 100644 web-app/build/static/js/8311.d87242df.chunk.js.map delete mode 100644 web-app/build/static/js/8789.5dfcad74.chunk.js delete mode 100644 web-app/build/static/js/8789.5dfcad74.chunk.js.map create mode 100644 web-app/build/static/js/8789.c1e4949f.chunk.js create mode 100644 web-app/build/static/js/8789.c1e4949f.chunk.js.map delete mode 100644 web-app/build/static/js/8821.e7fb1c57.chunk.js delete mode 100644 web-app/build/static/js/8821.e7fb1c57.chunk.js.map delete mode 100644 web-app/build/static/js/8823.034b6a8d.chunk.js delete mode 100644 web-app/build/static/js/8823.034b6a8d.chunk.js.map create mode 100644 web-app/build/static/js/8823.5a005f09.chunk.js create mode 100644 web-app/build/static/js/8823.5a005f09.chunk.js.map create mode 100644 web-app/build/static/js/960.41c7b96c.chunk.js create mode 100644 web-app/build/static/js/960.41c7b96c.chunk.js.map delete mode 100644 web-app/build/static/js/960.494cc9da.chunk.js delete mode 100644 web-app/build/static/js/960.494cc9da.chunk.js.map create mode 100644 web-app/build/static/js/985.c802474d.chunk.js create mode 100644 web-app/build/static/js/985.c802474d.chunk.js.map delete mode 100644 web-app/build/static/js/985.f5122b3c.chunk.js delete mode 100644 web-app/build/static/js/985.f5122b3c.chunk.js.map delete mode 100644 web-app/build/static/js/main.77c2c9f2.js delete mode 100644 web-app/build/static/js/main.77c2c9f2.js.map create mode 100644 web-app/build/static/js/main.dd292f6d.js rename web-app/build/static/js/{main.77c2c9f2.js.LICENSE.txt => main.dd292f6d.js.LICENSE.txt} (100%) create mode 100644 web-app/build/static/js/main.dd292f6d.js.map diff --git a/CHANGELOG.md b/CHANGELOG.md index 5daaf57f0..47e4c72db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ # Changelog +## Release v1.5.0 + +Features: + +- Added remove Tier functionality + +Bug Fix: + +- Fixed ILM rule tags not being shown +- Fixed race condition Object Browser websocket +- Fixed Encryption page crashing on empty response +- Fixed Replication Delete Marker comparisons + +Additional Changes: + +- Use automatic URI encoding for APIs +- Vulnerability updates + ## Release v1.4.0 Features: diff --git a/web-app/build/asset-manifest.json b/web-app/build/asset-manifest.json index f472a08a0..7c00a6f56 100644 --- a/web-app/build/asset-manifest.json +++ b/web-app/build/asset-manifest.json @@ -1,7 +1,7 @@ { "files": { "main.css": "./static/css/main.e60e4760.css", - "main.js": "./static/js/main.77c2c9f2.js", + "main.js": "./static/js/main.dd292f6d.js", "static/js/5301.2c626a41.chunk.js": "./static/js/5301.2c626a41.chunk.js", "static/js/9361.3fc638a6.chunk.js": "./static/js/9361.3fc638a6.chunk.js", "static/js/843.454ac75f.chunk.js": "./static/js/843.454ac75f.chunk.js", @@ -10,12 +10,12 @@ "static/js/5711.9df9b4a2.chunk.js": "./static/js/5711.9df9b4a2.chunk.js", "static/js/8769.996efd0a.chunk.js": "./static/js/8769.996efd0a.chunk.js", "static/js/2033.bea44dd7.chunk.js": "./static/js/2033.bea44dd7.chunk.js", - "static/js/8821.e7fb1c57.chunk.js": "./static/js/8821.e7fb1c57.chunk.js", + "static/js/8311.d87242df.chunk.js": "./static/js/8311.d87242df.chunk.js", "static/js/9987.79508d87.chunk.js": "./static/js/9987.79508d87.chunk.js", "static/js/689.8272f409.chunk.js": "./static/js/689.8272f409.chunk.js", "static/js/6164.c2cd952a.chunk.js": "./static/js/6164.c2cd952a.chunk.js", "static/js/2372.97c7de62.chunk.js": "./static/js/2372.97c7de62.chunk.js", - "static/js/1324.62d917da.chunk.js": "./static/js/1324.62d917da.chunk.js", + "static/js/1324.cc645cb1.chunk.js": "./static/js/1324.cc645cb1.chunk.js", "static/js/5693.eb317771.chunk.js": "./static/js/5693.eb317771.chunk.js", "static/js/5872.62eb672b.chunk.js": "./static/js/5872.62eb672b.chunk.js", "static/js/6758.cf46c98c.chunk.js": "./static/js/6758.cf46c98c.chunk.js", @@ -27,8 +27,8 @@ "static/js/9340.acfd036d.chunk.js": "./static/js/9340.acfd036d.chunk.js", "static/js/9269.dfec9438.chunk.js": "./static/js/9269.dfec9438.chunk.js", "static/js/6925.b3e208b0.chunk.js": "./static/js/6925.b3e208b0.chunk.js", - "static/js/3527.30ec1659.chunk.js": "./static/js/3527.30ec1659.chunk.js", - "static/js/8789.5dfcad74.chunk.js": "./static/js/8789.5dfcad74.chunk.js", + "static/js/3527.b7757ae8.chunk.js": "./static/js/3527.b7757ae8.chunk.js", + "static/js/8789.c1e4949f.chunk.js": "./static/js/8789.c1e4949f.chunk.js", "static/js/7485.64738b77.chunk.js": "./static/js/7485.64738b77.chunk.js", "static/js/7041.219c4d11.chunk.js": "./static/js/7041.219c4d11.chunk.js", "static/js/2138.7da0f275.chunk.js": "./static/js/2138.7da0f275.chunk.js", @@ -40,40 +40,40 @@ "static/js/4103.926c44ef.chunk.js": "./static/js/4103.926c44ef.chunk.js", "static/js/1702.851e407f.chunk.js": "./static/js/1702.851e407f.chunk.js", "static/js/7601.4e033e78.chunk.js": "./static/js/7601.4e033e78.chunk.js", - "static/js/2959.c4f178f1.chunk.js": "./static/js/2959.c4f178f1.chunk.js", + "static/js/2959.f25a9ef1.chunk.js": "./static/js/2959.f25a9ef1.chunk.js", "static/js/9619.a756233f.chunk.js": "./static/js/9619.a756233f.chunk.js", "static/js/8017.d5b163f3.chunk.js": "./static/js/8017.d5b163f3.chunk.js", "static/js/3323.f86a698b.chunk.js": "./static/js/3323.f86a698b.chunk.js", "static/js/5128.96ab1387.chunk.js": "./static/js/5128.96ab1387.chunk.js", "static/js/6140.37801ce8.chunk.js": "./static/js/6140.37801ce8.chunk.js", "static/js/696.77a3fec7.chunk.js": "./static/js/696.77a3fec7.chunk.js", - "static/js/2166.bb4ae347.chunk.js": "./static/js/2166.bb4ae347.chunk.js", + "static/js/2166.a0f01e1a.chunk.js": "./static/js/2166.a0f01e1a.chunk.js", "static/js/7063.d62078ab.chunk.js": "./static/js/7063.d62078ab.chunk.js", "static/js/3061.2419f208.chunk.js": "./static/js/3061.2419f208.chunk.js", "static/js/5064.ccf271db.chunk.js": "./static/js/5064.ccf271db.chunk.js", "static/js/7643.41c0709d.chunk.js": "./static/js/7643.41c0709d.chunk.js", - "static/js/985.f5122b3c.chunk.js": "./static/js/985.f5122b3c.chunk.js", - "static/js/1370.adfc1682.chunk.js": "./static/js/1370.adfc1682.chunk.js", - "static/js/8823.034b6a8d.chunk.js": "./static/js/8823.034b6a8d.chunk.js", + "static/js/985.c802474d.chunk.js": "./static/js/985.c802474d.chunk.js", + "static/js/1370.a3d466ac.chunk.js": "./static/js/1370.a3d466ac.chunk.js", + "static/js/8823.5a005f09.chunk.js": "./static/js/8823.5a005f09.chunk.js", "static/js/24.1245bd95.chunk.js": "./static/js/24.1245bd95.chunk.js", - "static/js/5851.9d7a7887.chunk.js": "./static/js/5851.9d7a7887.chunk.js", - "static/js/4705.2270c966.chunk.js": "./static/js/4705.2270c966.chunk.js", + "static/js/5851.9aeea951.chunk.js": "./static/js/5851.9aeea951.chunk.js", + "static/js/4705.1a1c4cd3.chunk.js": "./static/js/4705.1a1c4cd3.chunk.js", "static/js/3654.877a48d3.chunk.js": "./static/js/3654.877a48d3.chunk.js", - "static/js/960.494cc9da.chunk.js": "./static/js/960.494cc9da.chunk.js", + "static/js/960.41c7b96c.chunk.js": "./static/js/960.41c7b96c.chunk.js", "static/js/8642.ab45092c.chunk.js": "./static/js/8642.ab45092c.chunk.js", "static/js/3329.89a09424.chunk.js": "./static/js/3329.89a09424.chunk.js", "static/js/2332.7e0aee28.chunk.js": "./static/js/2332.7e0aee28.chunk.js", - "static/js/5941.4df5a08b.chunk.js": "./static/js/5941.4df5a08b.chunk.js", + "static/js/5941.c85331e3.chunk.js": "./static/js/5941.c85331e3.chunk.js", "static/js/2704.fe33dd23.chunk.js": "./static/js/2704.fe33dd23.chunk.js", - "static/js/7774.4d23a595.chunk.js": "./static/js/7774.4d23a595.chunk.js", + "static/js/7774.32142847.chunk.js": "./static/js/7774.32142847.chunk.js", "static/js/3851.c5eaa08e.chunk.js": "./static/js/3851.c5eaa08e.chunk.js", "static/js/9965.e00429f9.chunk.js": "./static/js/9965.e00429f9.chunk.js", - "static/js/6065.f30b3ff2.chunk.js": "./static/js/6065.f30b3ff2.chunk.js", + "static/js/6065.e12fd403.chunk.js": "./static/js/6065.e12fd403.chunk.js", "static/js/12.ab9b7ed0.chunk.js": "./static/js/12.ab9b7ed0.chunk.js", "static/js/8010.8ce54818.chunk.js": "./static/js/8010.8ce54818.chunk.js", "static/js/2689.5e76c1cd.chunk.js": "./static/js/2689.5e76c1cd.chunk.js", "static/js/872.6f58df17.chunk.js": "./static/js/872.6f58df17.chunk.js", - "static/js/4676.578844c1.chunk.js": "./static/js/4676.578844c1.chunk.js", + "static/js/4676.8d6be1dd.chunk.js": "./static/js/4676.8d6be1dd.chunk.js", "static/js/8825.e5adf924.chunk.js": "./static/js/8825.e5adf924.chunk.js", "static/js/614.f6cdf349.chunk.js": "./static/js/614.f6cdf349.chunk.js", "static/js/502.0106f2a9.chunk.js": "./static/js/502.0106f2a9.chunk.js", @@ -95,7 +95,7 @@ "static/js/6016.2a05d7e1.chunk.js": "./static/js/6016.2a05d7e1.chunk.js", "static/js/9652.3c40b533.chunk.js": "./static/js/9652.3c40b533.chunk.js", "static/js/1195.955963a0.chunk.js": "./static/js/1195.955963a0.chunk.js", - "static/js/1011.13d372c8.chunk.js": "./static/js/1011.13d372c8.chunk.js", + "static/js/1011.59fa8004.chunk.js": "./static/js/1011.59fa8004.chunk.js", "static/media/videoBG.mp4": "./static/media/videoBG.17363418b3c2246a0e27.mp4", "static/media/loginAnimationPoster.png": "./static/media/loginAnimationPoster.9aa924bfe619e71d5d29.png", "static/media/Inter-BoldItalic.woff": "./static/media/Inter-BoldItalic.b376885042f6c961a541.woff", @@ -119,7 +119,7 @@ "static/media/placeholderimage.png": "./static/media/placeholderimage.077ea48bd1ef1f4a883f.png", "index.html": "./index.html", "main.e60e4760.css.map": "./static/css/main.e60e4760.css.map", - "main.77c2c9f2.js.map": "./static/js/main.77c2c9f2.js.map", + "main.dd292f6d.js.map": "./static/js/main.dd292f6d.js.map", "5301.2c626a41.chunk.js.map": "./static/js/5301.2c626a41.chunk.js.map", "9361.3fc638a6.chunk.js.map": "./static/js/9361.3fc638a6.chunk.js.map", "843.454ac75f.chunk.js.map": "./static/js/843.454ac75f.chunk.js.map", @@ -128,12 +128,12 @@ "5711.9df9b4a2.chunk.js.map": "./static/js/5711.9df9b4a2.chunk.js.map", "8769.996efd0a.chunk.js.map": "./static/js/8769.996efd0a.chunk.js.map", "2033.bea44dd7.chunk.js.map": "./static/js/2033.bea44dd7.chunk.js.map", - "8821.e7fb1c57.chunk.js.map": "./static/js/8821.e7fb1c57.chunk.js.map", + "8311.d87242df.chunk.js.map": "./static/js/8311.d87242df.chunk.js.map", "9987.79508d87.chunk.js.map": "./static/js/9987.79508d87.chunk.js.map", "689.8272f409.chunk.js.map": "./static/js/689.8272f409.chunk.js.map", "6164.c2cd952a.chunk.js.map": "./static/js/6164.c2cd952a.chunk.js.map", "2372.97c7de62.chunk.js.map": "./static/js/2372.97c7de62.chunk.js.map", - "1324.62d917da.chunk.js.map": "./static/js/1324.62d917da.chunk.js.map", + "1324.cc645cb1.chunk.js.map": "./static/js/1324.cc645cb1.chunk.js.map", "5693.eb317771.chunk.js.map": "./static/js/5693.eb317771.chunk.js.map", "5872.62eb672b.chunk.js.map": "./static/js/5872.62eb672b.chunk.js.map", "6758.cf46c98c.chunk.js.map": "./static/js/6758.cf46c98c.chunk.js.map", @@ -145,8 +145,8 @@ "9340.acfd036d.chunk.js.map": "./static/js/9340.acfd036d.chunk.js.map", "9269.dfec9438.chunk.js.map": "./static/js/9269.dfec9438.chunk.js.map", "6925.b3e208b0.chunk.js.map": "./static/js/6925.b3e208b0.chunk.js.map", - "3527.30ec1659.chunk.js.map": "./static/js/3527.30ec1659.chunk.js.map", - "8789.5dfcad74.chunk.js.map": "./static/js/8789.5dfcad74.chunk.js.map", + "3527.b7757ae8.chunk.js.map": "./static/js/3527.b7757ae8.chunk.js.map", + "8789.c1e4949f.chunk.js.map": "./static/js/8789.c1e4949f.chunk.js.map", "7485.64738b77.chunk.js.map": "./static/js/7485.64738b77.chunk.js.map", "7041.219c4d11.chunk.js.map": "./static/js/7041.219c4d11.chunk.js.map", "2138.7da0f275.chunk.js.map": "./static/js/2138.7da0f275.chunk.js.map", @@ -158,40 +158,40 @@ "4103.926c44ef.chunk.js.map": "./static/js/4103.926c44ef.chunk.js.map", "1702.851e407f.chunk.js.map": "./static/js/1702.851e407f.chunk.js.map", "7601.4e033e78.chunk.js.map": "./static/js/7601.4e033e78.chunk.js.map", - "2959.c4f178f1.chunk.js.map": "./static/js/2959.c4f178f1.chunk.js.map", + "2959.f25a9ef1.chunk.js.map": "./static/js/2959.f25a9ef1.chunk.js.map", "9619.a756233f.chunk.js.map": "./static/js/9619.a756233f.chunk.js.map", "8017.d5b163f3.chunk.js.map": "./static/js/8017.d5b163f3.chunk.js.map", "3323.f86a698b.chunk.js.map": "./static/js/3323.f86a698b.chunk.js.map", "5128.96ab1387.chunk.js.map": "./static/js/5128.96ab1387.chunk.js.map", "6140.37801ce8.chunk.js.map": "./static/js/6140.37801ce8.chunk.js.map", "696.77a3fec7.chunk.js.map": "./static/js/696.77a3fec7.chunk.js.map", - "2166.bb4ae347.chunk.js.map": "./static/js/2166.bb4ae347.chunk.js.map", + "2166.a0f01e1a.chunk.js.map": "./static/js/2166.a0f01e1a.chunk.js.map", "7063.d62078ab.chunk.js.map": "./static/js/7063.d62078ab.chunk.js.map", "3061.2419f208.chunk.js.map": "./static/js/3061.2419f208.chunk.js.map", "5064.ccf271db.chunk.js.map": "./static/js/5064.ccf271db.chunk.js.map", "7643.41c0709d.chunk.js.map": "./static/js/7643.41c0709d.chunk.js.map", - "985.f5122b3c.chunk.js.map": "./static/js/985.f5122b3c.chunk.js.map", - "1370.adfc1682.chunk.js.map": "./static/js/1370.adfc1682.chunk.js.map", - "8823.034b6a8d.chunk.js.map": "./static/js/8823.034b6a8d.chunk.js.map", + "985.c802474d.chunk.js.map": "./static/js/985.c802474d.chunk.js.map", + "1370.a3d466ac.chunk.js.map": "./static/js/1370.a3d466ac.chunk.js.map", + "8823.5a005f09.chunk.js.map": "./static/js/8823.5a005f09.chunk.js.map", "24.1245bd95.chunk.js.map": "./static/js/24.1245bd95.chunk.js.map", - "5851.9d7a7887.chunk.js.map": "./static/js/5851.9d7a7887.chunk.js.map", - "4705.2270c966.chunk.js.map": "./static/js/4705.2270c966.chunk.js.map", + "5851.9aeea951.chunk.js.map": "./static/js/5851.9aeea951.chunk.js.map", + "4705.1a1c4cd3.chunk.js.map": "./static/js/4705.1a1c4cd3.chunk.js.map", "3654.877a48d3.chunk.js.map": "./static/js/3654.877a48d3.chunk.js.map", - "960.494cc9da.chunk.js.map": "./static/js/960.494cc9da.chunk.js.map", + "960.41c7b96c.chunk.js.map": "./static/js/960.41c7b96c.chunk.js.map", "8642.ab45092c.chunk.js.map": "./static/js/8642.ab45092c.chunk.js.map", "3329.89a09424.chunk.js.map": "./static/js/3329.89a09424.chunk.js.map", "2332.7e0aee28.chunk.js.map": "./static/js/2332.7e0aee28.chunk.js.map", - "5941.4df5a08b.chunk.js.map": "./static/js/5941.4df5a08b.chunk.js.map", + "5941.c85331e3.chunk.js.map": "./static/js/5941.c85331e3.chunk.js.map", "2704.fe33dd23.chunk.js.map": "./static/js/2704.fe33dd23.chunk.js.map", - "7774.4d23a595.chunk.js.map": "./static/js/7774.4d23a595.chunk.js.map", + "7774.32142847.chunk.js.map": "./static/js/7774.32142847.chunk.js.map", "3851.c5eaa08e.chunk.js.map": "./static/js/3851.c5eaa08e.chunk.js.map", "9965.e00429f9.chunk.js.map": "./static/js/9965.e00429f9.chunk.js.map", - "6065.f30b3ff2.chunk.js.map": "./static/js/6065.f30b3ff2.chunk.js.map", + "6065.e12fd403.chunk.js.map": "./static/js/6065.e12fd403.chunk.js.map", "12.ab9b7ed0.chunk.js.map": "./static/js/12.ab9b7ed0.chunk.js.map", "8010.8ce54818.chunk.js.map": "./static/js/8010.8ce54818.chunk.js.map", "2689.5e76c1cd.chunk.js.map": "./static/js/2689.5e76c1cd.chunk.js.map", "872.6f58df17.chunk.js.map": "./static/js/872.6f58df17.chunk.js.map", - "4676.578844c1.chunk.js.map": "./static/js/4676.578844c1.chunk.js.map", + "4676.8d6be1dd.chunk.js.map": "./static/js/4676.8d6be1dd.chunk.js.map", "8825.e5adf924.chunk.js.map": "./static/js/8825.e5adf924.chunk.js.map", "614.f6cdf349.chunk.js.map": "./static/js/614.f6cdf349.chunk.js.map", "502.0106f2a9.chunk.js.map": "./static/js/502.0106f2a9.chunk.js.map", @@ -213,10 +213,10 @@ "6016.2a05d7e1.chunk.js.map": "./static/js/6016.2a05d7e1.chunk.js.map", "9652.3c40b533.chunk.js.map": "./static/js/9652.3c40b533.chunk.js.map", "1195.955963a0.chunk.js.map": "./static/js/1195.955963a0.chunk.js.map", - "1011.13d372c8.chunk.js.map": "./static/js/1011.13d372c8.chunk.js.map" + "1011.59fa8004.chunk.js.map": "./static/js/1011.59fa8004.chunk.js.map" }, "entrypoints": [ "static/css/main.e60e4760.css", - "static/js/main.77c2c9f2.js" + "static/js/main.dd292f6d.js" ] } \ No newline at end of file diff --git a/web-app/build/index.html b/web-app/build/index.html index 2a702c41a..e0de9863c 100644 --- a/web-app/build/index.html +++ b/web-app/build/index.html @@ -1 +1 @@ -MinIO Console
\ No newline at end of file +MinIO Console
\ No newline at end of file diff --git a/web-app/build/static/js/1011.13d372c8.chunk.js b/web-app/build/static/js/1011.13d372c8.chunk.js deleted file mode 100644 index 3b30dc018..000000000 --- a/web-app/build/static/js/1011.13d372c8.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[1011],{99956:(e,t,o)=>{"use strict";o.d(t,{X:()=>a});o(65043);var n=o(24241),r=o(70579);const a=[{label:"Access Key",elementKey:"accessKey"},{label:"Expiry",elementKey:"expiration",renderFunction:e=>{if(e){const t=n.c9.fromISO(e).toUTC().toFormat("y/M/d hh:mm:ss z");return(0,r.jsx)("span",{title:t,children:t})}return""}},{label:"Status",elementKey:"accountStatus",renderFunction:e=>"off"===e?"Disabled":"Enabled"},{label:"Name",elementKey:"name"},{label:"Description",elementKey:"description"}]},10158:(e,t,o)=>{"use strict";o.d(t,{A:()=>y});var n=o(65043),r=o(89923),a=o(56629),i=o(53518),l=o(41206),c=o(20554),s=o(56483),u=o(64159),p=o(94141),d=o(77403),f=o(24241),m=o(70579);const y=e=>{let{open:t,selectedAccessKey:o,closeModalAndRefresh:y}=e;const b=(0,c.jL)(),[h,g]=(0,n.useState)(!1),[x,v]=(0,n.useState)(""),[C,S]=(0,n.useState)(""),[w,j]=(0,n.useState)(""),[k,E]=(0,n.useState)(),[_,A]=(0,n.useState)("enabled");(0,n.useEffect)((()=>{if(!h&&""!==o){const e=(0,s.nf)(o);g(!0),a.F.serviceAccounts.getServiceAccount(e).then((e=>{g(!1);const t=e.data;S((null===t||void 0===t?void 0:t.name)||""),null!==t&&void 0!==t&&t.expiration&&E(f.c9.fromISO(null===t||void 0===t?void 0:t.expiration)),j((null===t||void 0===t?void 0:t.description)||""),A(t.accountStatus),v(t.policy||"")})).catch((e=>{g(!1),b((0,u.Dy)((0,i.S)(e)))}))}}),[o]);return(0,m.jsx)(p.A,{title:"Edit details of - ".concat(o),modalOpen:t,onClose:()=>{y()},titleIcon:(0,m.jsx)(r.uYH,{}),children:(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{var t;t=x,e.preventDefault(),a.F.serviceAccounts.updateServiceAccount((0,s.nf)(o),{policy:t,description:w,expiry:k,name:C,status:_}).then((()=>{y()})).catch((async e=>{const t=await e.json();b((0,u.C9)((0,i.S)(t)))}))},children:(0,m.jsxs)(r.xA9,{container:!0,children:[(0,m.jsx)(r.xA9,{item:!0,xs:12,children:(0,m.jsx)(l.A,{label:"Access Key Policy",value:x,onChange:e=>{v(e)},editorHeight:"350px",helptip:(0,m.jsx)(n.Fragment,{children:(0,m.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})})})}),(0,m.jsx)(r.azJ,{sx:{marginBottom:"15px",marginTop:"15px",display:"flex",width:"100%","& label":{width:"195px"}},children:(0,m.jsx)(r.e8j,{noLabelMinWidth:!0,value:k,onChange:e=>{E(e)},id:"expiryTime",label:"Expiry",timeFormat:"24h",secondsSelector:!1})}),(0,m.jsx)(r.xA9,{xs:12,sx:{marginBottom:"15px"},children:(0,m.jsx)(r.cl_,{value:C,size:120,label:"Name",id:"name",name:"name",type:"text",placeholder:"Enter a name",onChange:e=>{S(e.target.value)}})}),(0,m.jsx)(r.xA9,{xs:12,sx:{marginBottom:"15px"},children:(0,m.jsx)(r.cl_,{size:120,value:w,label:"Description",id:"description",name:"description",type:"text",placeholder:"Enter a description",onChange:e=>{j(e.target.value)}})}),(0,m.jsxs)(r.xA9,{xs:12,sx:{display:"flex",alignItems:"center",justifyContent:"start",fontWeight:600,color:"rgb(7, 25, 62)",gap:2,marginBottom:"15px"},children:[(0,m.jsx)("label",{style:{width:"150px"},children:"Status"}),(0,m.jsx)(r.azJ,{sx:{padding:"2px"},children:(0,m.jsx)(r.dOG,{style:{gap:"115px"},indicatorLabels:["Enabled","Disabled"],checked:"on"===_,id:"saStatus",name:"saStatus",label:"",onChange:e=>{A(e.target.checked?"on":"off")},value:"yes"})})]}),(0,m.jsxs)(r.xA9,{item:!0,xs:12,sx:d.Uz.modalButtonBar,children:[(0,m.jsx)(r.$nd,{id:"cancel-sa-policy",type:"button",variant:"regular",onClick:()=>{y()},disabled:h,label:"Cancel"}),(0,m.jsx)(r.$nd,{id:"save-sa-policy",type:"submit",variant:"callAction",color:"primary",disabled:h,label:"Update"})]})]})})})}},72237:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(65043),r=o(70579);const a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(o){return(0,r.jsx)(n.Suspense,{fallback:t,children:(0,r.jsx)(e,{...o})})}}},41206:(e,t,o)=>{"use strict";o.d(t,{A:()=>s});var n=o(65043),r=o(89923),a=o(61476),i=o.n(a),l=o(6681),c=o(70579);const s=e=>{let{value:t,label:o="",tooltip:a="",mode:s="json",onChange:u,editorHeight:p=250,helptip:d}=e;return(0,c.jsx)(r.BYM,{value:t,onChange:e=>u(e),mode:s,tooltip:a,editorHeight:p,label:o,helpTools:(0,c.jsx)(n.Fragment,{children:(0,c.jsx)(l.A,{tooltip:"Copy to Clipboard",children:(0,c.jsx)(i(),{text:t,children:(0,c.jsx)(r.$nd,{type:"button",id:"copy-code-mirror",icon:(0,c.jsx)(r.TdU,{}),color:"primary",variant:"regular"})})})}),helpTip:d,helpTipPlacement:"right"})}},45479:(e,t,o)=>{"use strict";o.d(t,{Ck:()=>a,PE:()=>i,Qm:()=>c,Xm:()=>l,uu:()=>s});o(65043);var n=o(89923),r=o(70579);const a=[{icon:(0,r.jsx)(n.DzZ,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,r.jsx)(n.MZJ,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,r.jsx)(n.loI,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,r.jsx)(n.qm4,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,r.jsx)(n.Pq3,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,r.jsx)(n.RYV,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,r.jsx)(n.D0K,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,r.jsx)(n.rBG,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"},{icon:(0,r.jsx)(n.Dk$,{}),configuration_id:"audit_kafka",configuration_label:"Audit Kafka"}],i={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt", ".log" or ".csv" - you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*", "application/json" or "application/xml" - you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation, e.g. 2s",type:"duration",placeholder:"Enter Max Sleep Duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay Multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379" - you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_kafka:[{name:"enable",required:!1,label:"Enable",tooltip:"Enable audit_kafka target",type:"on|off",customValueProcess:e=>""===e||"on"===e?"on":"off"},{name:"brokers",required:!0,label:"Brokers",type:"csv",placeholder:"Enter Kafka Broker"},{name:"topic",required:!1,label:"Topic",type:"string",placeholder:"Enter Kafka Topic",tooltip:"Kafka topic used for bucket notifications"},{name:"sasl",required:!1,label:"Use SASL",tooltip:"Enable SASL (Simple Authentication and Security Layer) authentication",type:"on|off"},{name:"sasl_username",required:!1,label:"SASL Username",type:"string",placeholder:"Enter SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_password",required:!1,label:"SASL Password",type:"password",placeholder:"Enter SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_mechanism",required:!1,label:"SASL Mechanism",type:"string",placeholder:"Enter SASL Mechanism",tooltip:"SASL authentication mechanism"},{name:"tls",required:!1,label:"Use TLS",tooltip:"Enable TLS (Transport Layer Security)",type:"on|off"},{name:"tls_skip_verify",required:!1,label:"Skip TLS Verification",tooltip:"Trust server TLS without verification",type:"on|off"},{name:"client_tls_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_tls_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"tls_client_auth",required:!1,label:"TLS Client Auth",tooltip:"ClientAuth determines the Kafka server's policy for TLS client authorization",type:"string"},{name:"version",required:!1,label:"Version",tooltip:"Specify the version of the Kafka cluster",type:"string"}]},l=e=>e.filter((e=>""!==e.value)),c=(e,t,o)=>{const n=e.target,r=n.value;let a=[...o];return n.checked?a.push(r):a=a.filter((e=>e!==r)),t(a),a},s=e=>{let t={};return e.forEach((e=>{if(e.env_override){const o={value:e.env_override.value||"",overrideEnv:e.env_override.name||""};t={...t,[e.key]:o}}})),t}},68045:(e,t,o)=>{"use strict";o.d(t,{A:()=>p});var n=o(65043),r=o(89923),a=o(58661),i=o(64159),l=o(20554),c=o(56629),s=o(53518),u=o(70579);const p=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:o,selectedSAs:p}=e;const d=(0,l.jL)(),[f,m]=(0,n.useState)(!1);if(!p)return null;return(0,u.jsx)(a.A,{title:"Delete Access Keys",confirmText:"Delete",isOpen:o,titleIcon:(0,u.jsx)(r.xWY,{}),isLoading:f,onConfirm:()=>{m(!0),c.F.serviceAccounts.deleteMultipleServiceAccounts(p).then((e=>{t(!0)})).catch((async e=>{const o=await e.json();d((0,i.C9)((0,s.S)(o))),t(!1)})).finally((()=>m(!1)))},onClose:()=>t(!1),confirmationContent:(0,u.jsxs)(n.Fragment,{children:["Are you sure you want to delete the selected ",p.length," ","Access Keys?"," "]})})}},8185:(e,t,o)=>{"use strict";o.d(t,{Hw:()=>r,LA:()=>n,SO:()=>a,rY:()=>i});const n=(e,t)=>{if(e.accessKey&&t.accessKey){if(e.accessKey>t.accessKey)return 1;if(e.accessKeye.name>t.name?1:e.namee>t?1:ee.policy>t.policy?1:e.policy{"use strict";var n=o(40139),r={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var o,a,i,l,c,s,u=!1;t||(t={}),o=t.debug||!1;try{if(i=n(),l=document.createRange(),c=document.getSelection(),(s=document.createElement("span")).textContent=e,s.ariaHidden="true",s.style.all="unset",s.style.position="fixed",s.style.top=0,s.style.clip="rect(0, 0, 0, 0)",s.style.whiteSpace="pre",s.style.webkitUserSelect="text",s.style.MozUserSelect="text",s.style.msUserSelect="text",s.style.userSelect="text",s.addEventListener("copy",(function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),"undefined"===typeof n.clipboardData){o&&console.warn("unable to use e.clipboardData"),o&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var a=r[t.format]||r.default;window.clipboardData.setData(a,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))})),document.body.appendChild(s),l.selectNodeContents(s),c.addRange(l),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(p){o&&console.error("unable to copy using execCommand: ",p),o&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(p){o&&console.error("unable to copy using clipboardData: ",p),o&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(a,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(l):c.removeAllRanges()),s&&document.body.removeChild(s),i()}return u}},24480:(e,t,o)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var r=l(o(65043)),a=l(o(75270)),i=["text","onCopy","options","children"];function l(e){return e&&e.__esModule?e:{default:e}}function c(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function s(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}function p(e,t){for(var o=0;o{"use strict";var n=o(24480).CopyToClipboard;n.CopyToClipboard=n,e.exports=n},40139:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,o=[],n=0;n.\n\nimport React from \"react\";\nimport { DateTime } from \"luxon\";\n\nexport const ACCOUNT_TABLE_COLUMNS = [\n { label: \"Access Key\", elementKey: \"accessKey\" },\n {\n label: \"Expiry\",\n elementKey: \"expiration\",\n renderFunction: (expTime: string) => {\n if (expTime) {\n const fmtDate = DateTime.fromISO(expTime)\n .toUTC()\n .toFormat(\"y/M/d hh:mm:ss z\");\n\n return {fmtDate};\n }\n return \"\";\n },\n },\n {\n label: \"Status\",\n elementKey: \"accountStatus\",\n renderFunction: (status: string) => {\n if (status === \"off\") {\n return \"Disabled\";\n } else {\n return \"Enabled\";\n }\n },\n },\n { label: \"Name\", elementKey: \"name\" },\n { label: \"Description\", elementKey: \"description\" },\n];\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState, Fragment } from \"react\";\nimport {\n Box,\n Button,\n ChangeAccessPolicyIcon,\n DateTimeInput,\n Grid,\n InputBox,\n Switch,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport { ApiError } from \"api/consoleApi\";\nimport { useAppDispatch } from \"store\";\nimport { encodeURLString } from \"common/utils\";\nimport { setErrorSnackMessage, setModalErrorSnackMessage } from \"systemSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { DateTime } from \"luxon\";\n\ninterface IServiceAccountPolicyProps {\n open: boolean;\n selectedAccessKey: string | null;\n closeModalAndRefresh: () => void;\n}\n\nconst EditServiceAccount = ({\n open,\n selectedAccessKey,\n closeModalAndRefresh,\n}: IServiceAccountPolicyProps) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [expiry, setExpiry] = useState();\n const [status, setStatus] = useState(\"enabled\");\n\n useEffect(() => {\n if (!loading && selectedAccessKey !== \"\") {\n const sourceAccKey = encodeURLString(selectedAccessKey);\n setLoading(true);\n api.serviceAccounts\n .getServiceAccount(sourceAccKey)\n .then((res) => {\n setLoading(false);\n const saInfo = res.data;\n\n setName(saInfo?.name || \"\");\n\n if (saInfo?.expiration) {\n setExpiry(DateTime.fromISO(saInfo?.expiration));\n }\n\n setDescription(saInfo?.description || \"\");\n setStatus(saInfo.accountStatus);\n\n setPolicyDefinition(saInfo.policy || \"\");\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err)));\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedAccessKey]);\n\n const setPolicy = (event: React.FormEvent, newPolicy: string) => {\n event.preventDefault();\n api.serviceAccounts\n .updateServiceAccount(encodeURLString(selectedAccessKey), {\n policy: newPolicy,\n description: description,\n expiry: expiry,\n name: name,\n status: status,\n })\n .then(() => {\n closeModalAndRefresh();\n })\n .catch(async (res) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n titleIcon={}\n >\n ) => {\n setPolicy(e, policyDefinition);\n }}\n >\n \n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"350px\"}\n helptip={\n \n \n Guide to access policy structure\n \n \n }\n />\n \n \n {\n setExpiry(e);\n }}\n id=\"expiryTime\"\n label={\"Expiry\"}\n timeFormat={\"24h\"}\n secondsSelector={false}\n />\n \n \n {\n setName(e.target.value);\n }}\n />\n \n \n {\n setDescription(e.target.value);\n }}\n />\n \n \n \n \n {\n setStatus(e.target.checked ? \"on\" : \"off\");\n }}\n value=\"yes\"\n />\n \n \n \n {\n closeModalAndRefresh();\n }}\n disabled={loading}\n label={\"Cancel\"}\n />\n \n \n \n \n \n );\n};\n\nexport default EditServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n helptip?: any;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n helptip,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n helpTip={helptip}\n helpTipPlacement=\"right\"\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\nimport {\n CodeIcon,\n CompressIcon,\n ConsoleIcon,\n FindReplaceIcon,\n FirstAidIcon,\n KeyIcon,\n LogsIcon,\n PendingItemsIcon,\n PublicIcon,\n} from \"mds\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_kafka\",\n configuration_label: \"Audit Kafka\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\", \".log\" or \".csv\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\", \"application/json\" or \"application/xml\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation, e.g. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep Duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay Multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_kafka: [\n {\n name: \"enable\",\n required: false,\n label: \"Enable\",\n tooltip: \"Enable audit_kafka target\",\n type: \"on|off\",\n customValueProcess: (origValue: string) => {\n return origValue === \"\" || origValue === \"on\" ? \"on\" : \"off\";\n },\n },\n {\n name: \"brokers\",\n required: true,\n label: \"Brokers\",\n type: \"csv\",\n placeholder: \"Enter Kafka Broker\",\n },\n {\n name: \"topic\",\n required: false,\n label: \"Topic\",\n type: \"string\",\n placeholder: \"Enter Kafka Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n },\n {\n name: \"sasl\",\n required: false,\n label: \"Use SASL\",\n tooltip:\n \"Enable SASL (Simple Authentication and Security Layer) authentication\",\n type: \"on|off\",\n },\n {\n name: \"sasl_username\",\n required: false,\n label: \"SASL Username\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_password\",\n required: false,\n label: \"SASL Password\",\n type: \"password\",\n placeholder: \"Enter SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_mechanism\",\n required: false,\n label: \"SASL Mechanism\",\n type: \"string\",\n placeholder: \"Enter SASL Mechanism\",\n tooltip: \"SASL authentication mechanism\",\n },\n {\n name: \"tls\",\n required: false,\n label: \"Use TLS\",\n tooltip: \"Enable TLS (Transport Layer Security)\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n required: false,\n label: \"Skip TLS Verification\",\n tooltip: \"Trust server TLS without verification\",\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_tls_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"tls_client_auth\",\n required: false,\n label: \"TLS Client Auth\",\n tooltip:\n \"ClientAuth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n },\n {\n name: \"version\",\n required: false,\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster\",\n type: \"string\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[],\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value || \"\",\n overrideEnv: envItem.env_override.name || \"\",\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport ConfirmDialog from \"../../../screens/Console/Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteMultiSAsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedSAs: string[];\n}\n\nconst DeleteMultipleSAs = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedSAs,\n}: IDeleteMultiSAsProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedSAs) {\n return null;\n }\n const onConfirmDelete = () => {\n setLoadingDelete(true);\n api.serviceAccounts\n .deleteMultipleServiceAccounts(selectedSAs)\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n };\n return (\n }\n isLoading={loadingDelete}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedSAs.length}{\" \"}\n Access Keys?{\" \"}\n \n }\n />\n );\n};\n\nexport default DeleteMultipleSAs;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["ACCOUNT_TABLE_COLUMNS","label","elementKey","renderFunction","expTime","fmtDate","DateTime","fromISO","toUTC","toFormat","_jsx","title","children","status","_ref","open","selectedAccessKey","closeModalAndRefresh","dispatch","useAppDispatch","loading","setLoading","useState","policyDefinition","setPolicyDefinition","name","setName","description","setDescription","expiry","setExpiry","setStatus","useEffect","sourceAccKey","encodeURLString","api","serviceAccounts","getServiceAccount","then","res","saInfo","data","expiration","accountStatus","policy","catch","err","setModalErrorSnackMessage","errorToHandler","ModalWrapper","concat","modalOpen","onClose","titleIcon","ChangeAccessPolicyIcon","noValidate","autoComplete","onSubmit","e","setPolicy","newPolicy","preventDefault","updateServiceAccount","async","json","setErrorSnackMessage","_jsxs","Grid","container","item","xs","CodeMirrorWrapper","value","onChange","editorHeight","helptip","Fragment","target","href","Box","sx","marginBottom","marginTop","display","width","DateTimeInput","noLabelMinWidth","id","timeFormat","secondsSelector","InputBox","size","type","placeholder","alignItems","justifyContent","fontWeight","color","gap","style","padding","Switch","indicatorLabels","checked","modalStyleUtils","modalButtonBar","Button","variant","onClick","disabled","WrappedComponent","fallback","arguments","length","undefined","props","Suspense","tooltip","mode","CodeEditor","helpTools","TooltipWrapper","CopyToClipboard","text","icon","CopyIcon","helpTip","helpTipPlacement","configurationElements","PublicIcon","configuration_id","configuration_label","CompressIcon","CodeIcon","FirstAidIcon","FindReplaceIcon","KeyIcon","ConsoleIcon","PendingItemsIcon","LogsIcon","fieldsConfigurations","region","required","compression","withBorder","heal","scanner","etcd","multiline","logger_webhook","audit_webhook","audit_kafka","customValueProcess","origValue","removeEmptyFields","formFields","filter","field","selectSAs","setSelectedSAs","selectedSAs","targetD","elements","push","element","overrideFields","overrideReturn","forEach","envItem","env_override","overrideEnv","key","closeDeleteModalAndRefresh","deleteOpen","loadingDelete","setLoadingDelete","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","deleteMultipleServiceAccounts","_","finally","confirmationContent","usersSort","a","b","accessKey","policySort","stringSort","policyDetailsSort","deselectCurrent","require","clipboardToIE11Formatting","module","exports","options","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","i","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/1011.59fa8004.chunk.js b/web-app/build/static/js/1011.59fa8004.chunk.js new file mode 100644 index 000000000..321efac18 --- /dev/null +++ b/web-app/build/static/js/1011.59fa8004.chunk.js @@ -0,0 +1,2 @@ +(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[1011],{99956:(e,t,o)=>{"use strict";o.d(t,{X:()=>a});o(65043);var n=o(24241),r=o(70579);const a=[{label:"Access Key",elementKey:"accessKey"},{label:"Expiry",elementKey:"expiration",renderFunction:e=>{if(e){const t=n.c9.fromISO(e).toUTC().toFormat("y/M/d hh:mm:ss z");return(0,r.jsx)("span",{title:t,children:t})}return""}},{label:"Status",elementKey:"accountStatus",renderFunction:e=>"off"===e?"Disabled":"Enabled"},{label:"Name",elementKey:"name"},{label:"Description",elementKey:"description"}]},10158:(e,t,o)=>{"use strict";o.d(t,{A:()=>m});var n=o(65043),r=o(89923),a=o(56629),i=o(53518),l=o(41206),c=o(20554),s=o(64159),u=o(94141),p=o(77403),d=o(24241),f=o(70579);const m=e=>{let{open:t,selectedAccessKey:o,closeModalAndRefresh:m}=e;const y=(0,c.jL)(),[b,h]=(0,n.useState)(!1),[g,x]=(0,n.useState)(""),[v,C]=(0,n.useState)(""),[S,w]=(0,n.useState)(""),[j,k]=(0,n.useState)(),[E,_]=(0,n.useState)("enabled");(0,n.useEffect)((()=>{b||""===o||(h(!0),a.F.serviceAccounts.getServiceAccount(o||"").then((e=>{h(!1);const t=e.data;C((null===t||void 0===t?void 0:t.name)||""),null!==t&&void 0!==t&&t.expiration&&k(d.c9.fromISO(null===t||void 0===t?void 0:t.expiration)),w((null===t||void 0===t?void 0:t.description)||""),_(t.accountStatus),x(t.policy||"")})).catch((e=>{h(!1),y((0,s.Dy)((0,i.S)(e)))})))}),[o]);return(0,f.jsx)(u.A,{title:"Edit details of - ".concat(o),modalOpen:t,onClose:()=>{m()},titleIcon:(0,f.jsx)(r.uYH,{}),children:(0,f.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{var t;t=g,e.preventDefault(),a.F.serviceAccounts.updateServiceAccount(o||"",{policy:t,description:S,expiry:j,name:v,status:E}).then((()=>{m()})).catch((async e=>{const t=await e.json();y((0,s.C9)((0,i.S)(t)))}))},children:(0,f.jsxs)(r.xA9,{container:!0,children:[(0,f.jsx)(r.xA9,{item:!0,xs:12,children:(0,f.jsx)(l.A,{label:"Access Key Policy",value:g,onChange:e=>{x(e)},editorHeight:"350px",helptip:(0,f.jsx)(n.Fragment,{children:(0,f.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})})})}),(0,f.jsx)(r.azJ,{sx:{marginBottom:"15px",marginTop:"15px",display:"flex",width:"100%","& label":{width:"195px"}},children:(0,f.jsx)(r.e8j,{noLabelMinWidth:!0,value:j,onChange:e=>{k(e)},id:"expiryTime",label:"Expiry",timeFormat:"24h",secondsSelector:!1})}),(0,f.jsx)(r.xA9,{xs:12,sx:{marginBottom:"15px"},children:(0,f.jsx)(r.cl_,{value:v,size:120,label:"Name",id:"name",name:"name",type:"text",placeholder:"Enter a name",onChange:e=>{C(e.target.value)}})}),(0,f.jsx)(r.xA9,{xs:12,sx:{marginBottom:"15px"},children:(0,f.jsx)(r.cl_,{size:120,value:S,label:"Description",id:"description",name:"description",type:"text",placeholder:"Enter a description",onChange:e=>{w(e.target.value)}})}),(0,f.jsxs)(r.xA9,{xs:12,sx:{display:"flex",alignItems:"center",justifyContent:"start",fontWeight:600,color:"rgb(7, 25, 62)",gap:2,marginBottom:"15px"},children:[(0,f.jsx)("label",{style:{width:"150px"},children:"Status"}),(0,f.jsx)(r.azJ,{sx:{padding:"2px"},children:(0,f.jsx)(r.dOG,{style:{gap:"115px"},indicatorLabels:["Enabled","Disabled"],checked:"on"===E,id:"saStatus",name:"saStatus",label:"",onChange:e=>{_(e.target.checked?"on":"off")},value:"yes"})})]}),(0,f.jsxs)(r.xA9,{item:!0,xs:12,sx:p.Uz.modalButtonBar,children:[(0,f.jsx)(r.$nd,{id:"cancel-sa-policy",type:"button",variant:"regular",onClick:()=>{m()},disabled:b,label:"Cancel"}),(0,f.jsx)(r.$nd,{id:"save-sa-policy",type:"submit",variant:"callAction",color:"primary",disabled:b,label:"Update"})]})]})})})}},72237:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(65043),r=o(70579);const a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(o){return(0,r.jsx)(n.Suspense,{fallback:t,children:(0,r.jsx)(e,{...o})})}}},41206:(e,t,o)=>{"use strict";o.d(t,{A:()=>s});var n=o(65043),r=o(89923),a=o(61476),i=o.n(a),l=o(6681),c=o(70579);const s=e=>{let{value:t,label:o="",tooltip:a="",mode:s="json",onChange:u,editorHeight:p=250,helptip:d}=e;return(0,c.jsx)(r.BYM,{value:t,onChange:e=>u(e),mode:s,tooltip:a,editorHeight:p,label:o,helpTools:(0,c.jsx)(n.Fragment,{children:(0,c.jsx)(l.A,{tooltip:"Copy to Clipboard",children:(0,c.jsx)(i(),{text:t,children:(0,c.jsx)(r.$nd,{type:"button",id:"copy-code-mirror",icon:(0,c.jsx)(r.TdU,{}),color:"primary",variant:"regular"})})})}),helpTip:d,helpTipPlacement:"right"})}},45479:(e,t,o)=>{"use strict";o.d(t,{Ck:()=>a,PE:()=>i,Qm:()=>c,Xm:()=>l,uu:()=>s});o(65043);var n=o(89923),r=o(70579);const a=[{icon:(0,r.jsx)(n.DzZ,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,r.jsx)(n.MZJ,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,r.jsx)(n.loI,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,r.jsx)(n.qm4,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,r.jsx)(n.Pq3,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,r.jsx)(n.RYV,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,r.jsx)(n.D0K,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,r.jsx)(n.rBG,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"},{icon:(0,r.jsx)(n.Dk$,{}),configuration_id:"audit_kafka",configuration_label:"Audit Kafka"}],i={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt", ".log" or ".csv" - you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*", "application/json" or "application/xml" - you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation, e.g. 2s",type:"duration",placeholder:"Enter Max Sleep Duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay Multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379" - you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_kafka:[{name:"enable",required:!1,label:"Enable",tooltip:"Enable audit_kafka target",type:"on|off",customValueProcess:e=>""===e||"on"===e?"on":"off"},{name:"brokers",required:!0,label:"Brokers",type:"csv",placeholder:"Enter Kafka Broker"},{name:"topic",required:!1,label:"Topic",type:"string",placeholder:"Enter Kafka Topic",tooltip:"Kafka topic used for bucket notifications"},{name:"sasl",required:!1,label:"Use SASL",tooltip:"Enable SASL (Simple Authentication and Security Layer) authentication",type:"on|off"},{name:"sasl_username",required:!1,label:"SASL Username",type:"string",placeholder:"Enter SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_password",required:!1,label:"SASL Password",type:"password",placeholder:"Enter SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_mechanism",required:!1,label:"SASL Mechanism",type:"string",placeholder:"Enter SASL Mechanism",tooltip:"SASL authentication mechanism"},{name:"tls",required:!1,label:"Use TLS",tooltip:"Enable TLS (Transport Layer Security)",type:"on|off"},{name:"tls_skip_verify",required:!1,label:"Skip TLS Verification",tooltip:"Trust server TLS without verification",type:"on|off"},{name:"client_tls_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_tls_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"tls_client_auth",required:!1,label:"TLS Client Auth",tooltip:"ClientAuth determines the Kafka server's policy for TLS client authorization",type:"string"},{name:"version",required:!1,label:"Version",tooltip:"Specify the version of the Kafka cluster",type:"string"}]},l=e=>e.filter((e=>""!==e.value)),c=(e,t,o)=>{const n=e.target,r=n.value;let a=[...o];return n.checked?a.push(r):a=a.filter((e=>e!==r)),t(a),a},s=e=>{let t={};return e.forEach((e=>{if(e.env_override){const o={value:e.env_override.value||"",overrideEnv:e.env_override.name||""};t={...t,[e.key]:o}}})),t}},68045:(e,t,o)=>{"use strict";o.d(t,{A:()=>p});var n=o(65043),r=o(89923),a=o(58661),i=o(64159),l=o(20554),c=o(56629),s=o(53518),u=o(70579);const p=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:o,selectedSAs:p}=e;const d=(0,l.jL)(),[f,m]=(0,n.useState)(!1);if(!p)return null;return(0,u.jsx)(a.A,{title:"Delete Access Keys",confirmText:"Delete",isOpen:o,titleIcon:(0,u.jsx)(r.xWY,{}),isLoading:f,onConfirm:()=>{m(!0),c.F.serviceAccounts.deleteMultipleServiceAccounts(p).then((e=>{t(!0)})).catch((async e=>{const o=await e.json();d((0,i.C9)((0,s.S)(o))),t(!1)})).finally((()=>m(!1)))},onClose:()=>t(!1),confirmationContent:(0,u.jsxs)(n.Fragment,{children:["Are you sure you want to delete the selected ",p.length," ","Access Keys?"," "]})})}},8185:(e,t,o)=>{"use strict";o.d(t,{Hw:()=>r,LA:()=>n,SO:()=>a,rY:()=>i});const n=(e,t)=>{if(e.accessKey&&t.accessKey){if(e.accessKey>t.accessKey)return 1;if(e.accessKeye.name>t.name?1:e.namee>t?1:ee.policy>t.policy?1:e.policy{"use strict";var n=o(40139),r={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var o,a,i,l,c,s,u=!1;t||(t={}),o=t.debug||!1;try{if(i=n(),l=document.createRange(),c=document.getSelection(),(s=document.createElement("span")).textContent=e,s.ariaHidden="true",s.style.all="unset",s.style.position="fixed",s.style.top=0,s.style.clip="rect(0, 0, 0, 0)",s.style.whiteSpace="pre",s.style.webkitUserSelect="text",s.style.MozUserSelect="text",s.style.msUserSelect="text",s.style.userSelect="text",s.addEventListener("copy",(function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),"undefined"===typeof n.clipboardData){o&&console.warn("unable to use e.clipboardData"),o&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var a=r[t.format]||r.default;window.clipboardData.setData(a,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))})),document.body.appendChild(s),l.selectNodeContents(s),c.addRange(l),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(p){o&&console.error("unable to copy using execCommand: ",p),o&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(p){o&&console.error("unable to copy using clipboardData: ",p),o&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(a,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(l):c.removeAllRanges()),s&&document.body.removeChild(s),i()}return u}},24480:(e,t,o)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var r=l(o(65043)),a=l(o(75270)),i=["text","onCopy","options","children"];function l(e){return e&&e.__esModule?e:{default:e}}function c(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function s(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}function p(e,t){for(var o=0;o{"use strict";var n=o(24480).CopyToClipboard;n.CopyToClipboard=n,e.exports=n},40139:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,o=[],n=0;n.\n\nimport React from \"react\";\nimport { DateTime } from \"luxon\";\n\nexport const ACCOUNT_TABLE_COLUMNS = [\n { label: \"Access Key\", elementKey: \"accessKey\" },\n {\n label: \"Expiry\",\n elementKey: \"expiration\",\n renderFunction: (expTime: string) => {\n if (expTime) {\n const fmtDate = DateTime.fromISO(expTime)\n .toUTC()\n .toFormat(\"y/M/d hh:mm:ss z\");\n\n return {fmtDate};\n }\n return \"\";\n },\n },\n {\n label: \"Status\",\n elementKey: \"accountStatus\",\n renderFunction: (status: string) => {\n if (status === \"off\") {\n return \"Disabled\";\n } else {\n return \"Enabled\";\n }\n },\n },\n { label: \"Name\", elementKey: \"name\" },\n { label: \"Description\", elementKey: \"description\" },\n];\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState, Fragment } from \"react\";\nimport {\n Box,\n Button,\n ChangeAccessPolicyIcon,\n DateTimeInput,\n Grid,\n InputBox,\n Switch,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport { ApiError } from \"api/consoleApi\";\nimport { useAppDispatch } from \"store\";\nimport { setErrorSnackMessage, setModalErrorSnackMessage } from \"systemSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { DateTime } from \"luxon\";\n\ninterface IServiceAccountPolicyProps {\n open: boolean;\n selectedAccessKey: string | null;\n closeModalAndRefresh: () => void;\n}\n\nconst EditServiceAccount = ({\n open,\n selectedAccessKey,\n closeModalAndRefresh,\n}: IServiceAccountPolicyProps) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [expiry, setExpiry] = useState();\n const [status, setStatus] = useState(\"enabled\");\n\n useEffect(() => {\n if (!loading && selectedAccessKey !== \"\") {\n setLoading(true);\n api.serviceAccounts\n .getServiceAccount(selectedAccessKey || \"\")\n .then((res) => {\n setLoading(false);\n const saInfo = res.data;\n\n setName(saInfo?.name || \"\");\n\n if (saInfo?.expiration) {\n setExpiry(DateTime.fromISO(saInfo?.expiration));\n }\n\n setDescription(saInfo?.description || \"\");\n setStatus(saInfo.accountStatus);\n\n setPolicyDefinition(saInfo.policy || \"\");\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err)));\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedAccessKey]);\n\n const setPolicy = (event: React.FormEvent, newPolicy: string) => {\n event.preventDefault();\n api.serviceAccounts\n .updateServiceAccount(selectedAccessKey || \"\", {\n policy: newPolicy,\n description: description,\n expiry: expiry,\n name: name,\n status: status,\n })\n .then(() => {\n closeModalAndRefresh();\n })\n .catch(async (res) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n titleIcon={}\n >\n ) => {\n setPolicy(e, policyDefinition);\n }}\n >\n \n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"350px\"}\n helptip={\n \n \n Guide to access policy structure\n \n \n }\n />\n \n \n {\n setExpiry(e);\n }}\n id=\"expiryTime\"\n label={\"Expiry\"}\n timeFormat={\"24h\"}\n secondsSelector={false}\n />\n \n \n {\n setName(e.target.value);\n }}\n />\n \n \n {\n setDescription(e.target.value);\n }}\n />\n \n \n \n \n {\n setStatus(e.target.checked ? \"on\" : \"off\");\n }}\n value=\"yes\"\n />\n \n \n \n {\n closeModalAndRefresh();\n }}\n disabled={loading}\n label={\"Cancel\"}\n />\n \n \n \n \n \n );\n};\n\nexport default EditServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n helptip?: any;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n helptip,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n helpTip={helptip}\n helpTipPlacement=\"right\"\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\nimport {\n CodeIcon,\n CompressIcon,\n ConsoleIcon,\n FindReplaceIcon,\n FirstAidIcon,\n KeyIcon,\n LogsIcon,\n PendingItemsIcon,\n PublicIcon,\n} from \"mds\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_kafka\",\n configuration_label: \"Audit Kafka\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\", \".log\" or \".csv\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\", \"application/json\" or \"application/xml\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation, e.g. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep Duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay Multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_kafka: [\n {\n name: \"enable\",\n required: false,\n label: \"Enable\",\n tooltip: \"Enable audit_kafka target\",\n type: \"on|off\",\n customValueProcess: (origValue: string) => {\n return origValue === \"\" || origValue === \"on\" ? \"on\" : \"off\";\n },\n },\n {\n name: \"brokers\",\n required: true,\n label: \"Brokers\",\n type: \"csv\",\n placeholder: \"Enter Kafka Broker\",\n },\n {\n name: \"topic\",\n required: false,\n label: \"Topic\",\n type: \"string\",\n placeholder: \"Enter Kafka Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n },\n {\n name: \"sasl\",\n required: false,\n label: \"Use SASL\",\n tooltip:\n \"Enable SASL (Simple Authentication and Security Layer) authentication\",\n type: \"on|off\",\n },\n {\n name: \"sasl_username\",\n required: false,\n label: \"SASL Username\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_password\",\n required: false,\n label: \"SASL Password\",\n type: \"password\",\n placeholder: \"Enter SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_mechanism\",\n required: false,\n label: \"SASL Mechanism\",\n type: \"string\",\n placeholder: \"Enter SASL Mechanism\",\n tooltip: \"SASL authentication mechanism\",\n },\n {\n name: \"tls\",\n required: false,\n label: \"Use TLS\",\n tooltip: \"Enable TLS (Transport Layer Security)\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n required: false,\n label: \"Skip TLS Verification\",\n tooltip: \"Trust server TLS without verification\",\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_tls_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"tls_client_auth\",\n required: false,\n label: \"TLS Client Auth\",\n tooltip:\n \"ClientAuth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n },\n {\n name: \"version\",\n required: false,\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster\",\n type: \"string\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[],\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value || \"\",\n overrideEnv: envItem.env_override.name || \"\",\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport ConfirmDialog from \"../../../screens/Console/Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteMultiSAsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedSAs: string[];\n}\n\nconst DeleteMultipleSAs = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedSAs,\n}: IDeleteMultiSAsProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedSAs) {\n return null;\n }\n const onConfirmDelete = () => {\n setLoadingDelete(true);\n api.serviceAccounts\n .deleteMultipleServiceAccounts(selectedSAs)\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n };\n return (\n }\n isLoading={loadingDelete}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedSAs.length}{\" \"}\n Access Keys?{\" \"}\n \n }\n />\n );\n};\n\nexport default DeleteMultipleSAs;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["ACCOUNT_TABLE_COLUMNS","label","elementKey","renderFunction","expTime","fmtDate","DateTime","fromISO","toUTC","toFormat","_jsx","title","children","status","_ref","open","selectedAccessKey","closeModalAndRefresh","dispatch","useAppDispatch","loading","setLoading","useState","policyDefinition","setPolicyDefinition","name","setName","description","setDescription","expiry","setExpiry","setStatus","useEffect","api","serviceAccounts","getServiceAccount","then","res","saInfo","data","expiration","accountStatus","policy","catch","err","setModalErrorSnackMessage","errorToHandler","ModalWrapper","concat","modalOpen","onClose","titleIcon","ChangeAccessPolicyIcon","noValidate","autoComplete","onSubmit","e","setPolicy","newPolicy","preventDefault","updateServiceAccount","async","json","setErrorSnackMessage","_jsxs","Grid","container","item","xs","CodeMirrorWrapper","value","onChange","editorHeight","helptip","Fragment","target","href","Box","sx","marginBottom","marginTop","display","width","DateTimeInput","noLabelMinWidth","id","timeFormat","secondsSelector","InputBox","size","type","placeholder","alignItems","justifyContent","fontWeight","color","gap","style","padding","Switch","indicatorLabels","checked","modalStyleUtils","modalButtonBar","Button","variant","onClick","disabled","WrappedComponent","fallback","arguments","length","undefined","props","Suspense","tooltip","mode","CodeEditor","helpTools","TooltipWrapper","CopyToClipboard","text","icon","CopyIcon","helpTip","helpTipPlacement","configurationElements","PublicIcon","configuration_id","configuration_label","CompressIcon","CodeIcon","FirstAidIcon","FindReplaceIcon","KeyIcon","ConsoleIcon","PendingItemsIcon","LogsIcon","fieldsConfigurations","region","required","compression","withBorder","heal","scanner","etcd","multiline","logger_webhook","audit_webhook","audit_kafka","customValueProcess","origValue","removeEmptyFields","formFields","filter","field","selectSAs","setSelectedSAs","selectedSAs","targetD","elements","push","element","overrideFields","overrideReturn","forEach","envItem","env_override","overrideEnv","key","closeDeleteModalAndRefresh","deleteOpen","loadingDelete","setLoadingDelete","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","deleteMultipleServiceAccounts","_","finally","confirmationContent","usersSort","a","b","accessKey","policySort","stringSort","policyDetailsSort","deselectCurrent","require","clipboardToIE11Formatting","module","exports","options","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","i","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/1324.62d917da.chunk.js b/web-app/build/static/js/1324.62d917da.chunk.js deleted file mode 100644 index f8766d31c..000000000 --- a/web-app/build/static/js/1324.62d917da.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[1324,5851,4705],{85851:(e,s,t)=>{t.r(s),t.d(s,{default:()=>x});var l=t(65043),n=t(89923),i=t(56483),o=t(64159),c=t(20554),r=t(58661),a=t(56629),d=t(53518),u=t(70579);const x=e=>{let{selectedGroups:s,deleteOpen:t,closeDeleteModalAndRefresh:x}=e;const p=(0,c.jL)(),[h,m]=(0,l.useState)(!1);if(!s)return null;const j=s.map((e=>(0,u.jsx)("div",{children:(0,u.jsx)("b",{children:e})},e)));return(0,u.jsx)(r.A,{title:"Delete Group".concat(s.length>1?"s":""),confirmText:"Delete",isOpen:t,titleIcon:(0,u.jsx)(n.xWY,{}),isLoading:h,onConfirm:()=>{for(let e of s)m(!0),a.F.group.removeGroup((0,i.nf)(e)).then((e=>{x(!0)})).catch((async e=>{const s=await e.json();p((0,o.C9)((0,d.S)(s))),x(!1)})).finally((()=>m(!1)))},onClose:()=>x(!1),confirmationContent:(0,u.jsxs)(l.Fragment,{children:["Are you sure you want to delete the following"," ",1===s.length?"":s.length," group",s.length>1?"s?":"?",j]})})}},91324:(e,s,t)=>{t.r(s),t.d(s,{default:()=>G,formatPolicy:()=>P});var l=t(65043),n=t(73216),i=t(89923),o=t(56629),c=t(53518),r=t(99161),a=t(77938),d=t(56483),u=t(64159),x=t(20554),p=t(62560),h=t(74705),m=t(77403),j=t(22923),b=t(94141),g=t(70579);const y=e=>{let{title:s="",groupStatus:t="enabled",preSelectedUsers:n=[],selectedGroup:r="",open:a,onClose:p}=e;const h=(0,x.jL)(),[y,f]=(0,l.useState)(n);return(0,g.jsxs)(b.A,{modalOpen:a,onClose:p,title:s,titleIcon:(0,g.jsx)(i.WC,{}),children:[(0,g.jsxs)(i.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,g.jsx)(i.EmB,{label:"Selected Group",sx:{width:"100%"},children:r}),(0,g.jsx)(j.A,{selectedUsers:y,setSelectedUsers:f,editMode:!r})]}),(0,g.jsxs)(i.xA9,{item:!0,xs:12,sx:m.Uz.modalButtonBar,children:[(0,g.jsx)(i.$nd,{id:"reset-add-group-member",type:"button",variant:"regular",onClick:()=>{f(n)},label:"Reset"}),(0,g.jsx)(i.$nd,{id:"save-add-group-member",type:"button",variant:"callAction",onClick:()=>{o.F.group.updateGroup((0,d.nf)(r),{members:y,status:t}).then((()=>{p()})).catch((e=>{p(),h((0,u.Dy)((0,c.S)(e.error)))}))},label:"Save"})]})]})};var f=t(85851),v=t(64681),A=t(6681),S=t(55968),C=t(48793);const P=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.length<=0?[]:e.split(",")},G=()=>{const e=(0,x.jL)(),s=(0,n.Zp)(),t=(0,n.g)(),[m,j]=(0,l.useState)({}),[b,G]=(0,l.useState)(!1),[M,U]=(0,l.useState)(!1),[k,w]=(0,l.useState)(!1),[E,z]=(0,l.useState)(""),[L,D]=(0,l.useState)("members"),F=(0,d.x6)(t.groupName||""),{members:K=[],policy:B="",status:R}=m,_=K.filter((e=>e.includes(E))),I=(0,a._)(r.Ms,r.Ld,!0);(0,l.useEffect)((()=>{e((0,u.ph)("group_details"))}),[]),(0,l.useEffect)((()=>{F&&Z()}),[F]);const O=P(B),N="enabled"===R,$=K.length>0?"Edit Members":"Add Members",H=(0,a._)(r.Ms,r.Oh),J=(0,a._)(r.Ms,r.Hr,!0),T=(0,a._)(r.Ms,r.QR,!0),Q=(0,a._)(r.Ms,r.yv,!0);function Z(){H&&o.F.group.groupInfo((0,d.nf)(F)).then((e=>{j(e.data)})).catch((s=>{e((0,u.Dy)((0,c.S)(s.error))),j({})}))}const W=(0,g.jsxs)(i.azJ,{onMouseMove:()=>{e((0,u.ph)("groups_members"))},children:[(0,g.jsx)(i._xt,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsxs)(i.azJ,{sx:{display:"flex",gap:10},children:[(0,g.jsx)(v.A,{placeholder:"Search members",onChange:e=>{z(e)},value:E,sx:{maxWidth:280}}),(0,g.jsx)(a.R,{resource:r.Ms,scopes:r.BD,errorProps:{disabled:!0},children:(0,g.jsx)(A.A,{tooltip:J?$:(0,r.vj)(r.k1,"edit Group membership"),children:(0,g.jsx)(i.$nd,{id:"add-user-group",label:$,variant:"callAction",icon:(0,g.jsx)(i.REV,{}),onClick:()=>{U(!0)},disabled:!J})})})]}),children:"Members"}),(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(a.R,{resource:r.Ms,scopes:r.x6,errorProps:{disabled:!0},children:(0,g.jsx)(A.A,{tooltip:I?"":(0,r.vj)(r.Ld,"view User details"),children:(0,g.jsx)(i.bQt,{itemActions:[{type:"view",onClick:e=>{s("".concat(r.zZ.USERS,"/").concat((0,d.nf)(e)))},isDisabled:!I}],columns:[{label:"Access Key"}],selectedItems:[],isLoading:!1,records:_,entityName:"Users"})})})})]}),Y=(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(i.azJ,{onMouseMove:()=>{e((0,u.ph)("groups_policies"))},children:(0,g.jsx)(i._xt,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsx)(A.A,{tooltip:T?"Set Policies":(0,r.vj)(r.QR,"assign Policies"),children:(0,g.jsx)(i.$nd,{id:"set-policies",label:"Set Policies",variant:"callAction",icon:(0,g.jsx)(i.n$X,{}),onClick:()=>{G(!0)},disabled:!T})}),children:"Policies"})}),(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(A.A,{tooltip:Q?"":(0,r.vj)(r.yv,"view Policy details"),children:(0,g.jsx)(i.bQt,{itemActions:[{type:"view",onClick:e=>{s("".concat(r.zZ.POLICIES,"/").concat((0,d.nf)(e)))},isDisabled:!Q}],columns:[{label:"Policy"}],isLoading:!1,records:O,entityName:"Policies"})})})]});return(0,g.jsxs)(l.Fragment,{children:[b?(0,g.jsx)(h.default,{open:b,selectedGroups:[F],selectedUser:null,closeModalAndRefresh:()=>{G(!1),Z(),e((0,p.Gy)([]))}}):null,M?(0,g.jsx)(y,{selectedGroup:F,onSaveClick:()=>{},title:$,groupStatus:R,preSelectedUsers:K,open:M,onClose:()=>{U(!1),Z()}}):null,k&&(0,g.jsx)(f.default,{deleteOpen:k,selectedGroups:[F],closeDeleteModalAndRefresh:e=>{w(!1),e&&s(r.zZ.GROUPS)}}),(0,g.jsx)(C.A,{label:(0,g.jsx)(l.Fragment,{children:(0,g.jsx)(i.EGL,{label:"Groups",onClick:()=>s(r.zZ.GROUPS)})}),actions:(0,g.jsx)(S.A,{})}),(0,g.jsxs)(i.Mxu,{children:[(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(i.lcx,{icon:(0,g.jsx)(l.Fragment,{children:(0,g.jsx)(i.YXz,{width:40})}),title:F,subTitle:null,bottomBorder:!0,actions:(0,g.jsxs)(i.azJ,{sx:{display:"flex",fontSize:14,alignItems:"center",gap:15},children:[(0,g.jsx)("span",{children:"Group Status:"}),(0,g.jsx)("span",{id:"group-status-label",style:{fontWeight:"bold"},children:N?"Enabled":"Disabled"}),(0,g.jsx)(A.A,{tooltip:(0,a._)(r.Ms,r.pf,!0)?"":(0,r.vj)(r.pf,"enable or disable Groups"),children:(0,g.jsx)(a.R,{resource:r.Ms,scopes:r.pf,errorProps:{disabled:!0},matchAll:!0,children:(0,g.jsx)(i.dOG,{indicatorLabels:["Enabled","Disabled"],checked:N,value:"group_enabled",id:"group-status",name:"group-status",onChange:()=>{var s;s=!N,o.F.group.updateGroup((0,d.nf)(F),{members:K,status:s?"enabled":"disabled"}).then((()=>{Z()})).catch((s=>{e((0,u.Dy)((0,c.S)(s.error)))}))},switchOnly:!0})})}),(0,g.jsx)(A.A,{tooltip:"Delete Group",children:(0,g.jsx)(i.$nd,{id:"delete-user-group",variant:"secondary",icon:(0,g.jsx)(i.ucK,{}),onClick:()=>{w(!0)}})})]}),sx:{marginBottom:15}})}),(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(i.tUM,{options:[{tabConfig:{id:"members",label:"Members"},content:W},{tabConfig:{id:"policies",label:"Policies"},content:Y}],currentTabOrPath:L,onTabClick:D})})]})]})}},22923:(e,s,t)=>{t.d(s,{A:()=>h});var l=t(65043),n=t(33097),i=t.n(n),o=t(56629),c=t(53518),r=t(89923),a=t(8185),d=t(64159),u=t(20554),x=t(64681),p=t(70579);const h=e=>{let{selectedUsers:s,setSelectedUsers:t,editMode:n=!1}=e;const h=(0,u.jL)(),[m,j]=(0,l.useState)([]),[b,g]=(0,l.useState)(!1),[y,f]=(0,l.useState)(""),v=(0,l.useCallback)((()=>{o.F.users.listUsers().then((e=>{let s=i()(e.data,"users",[]);s||(s=[]),j(s.sort(a.LA)),g(!1)})).catch((e=>{h((0,d.Dy)((0,c.S)(e.error))),g(!1)}))}),[h]);(0,l.useEffect)((()=>{g(!0)}),[]),(0,l.useEffect)((()=>{b&&v()}),[b,v]);const A=s||[],S=m.filter((e=>e.accessKey.includes(y)));return(0,p.jsx)(r.xA9,{item:!0,xs:12,className:"inputItem",children:(0,p.jsxs)(r.azJ,{children:[b&&(0,p.jsx)(r.z21,{}),(null===m||void 0===m?void 0:m.length)>0?(0,p.jsxs)(l.Fragment,{children:[(0,p.jsx)(r.xA9,{item:!0,xs:12,className:"inputItem",children:(0,p.jsx)(x.A,{label:n?"Edit Members":"Assign Users",placeholder:"Filter Users",onChange:f,value:y})}),(0,p.jsx)(r.bQt,{columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:e=>{const s=e.target,l=s.value,n=s.checked;let i=[...A];return n?i.push(l):i=i.filter((e=>e!==l)),t(i),i},selectedItems:A,isLoading:b,records:S,entityName:"Users",idField:"accessKey",customPaperHeight:"200px"})]}):(0,p.jsx)(r.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Users to display"})]})})}},42967:(e,s,t)=>{t.d(s,{A:()=>p});var l=t(65043),n=t(89923),i=t(8185),o=t(64681),c=t(64159),r=t(20554),a=t(62560),d=t(22166),u=t(56629),x=t(70579);const p=e=>{let{noTitle:s=!1}=e;const t=(0,r.jL)(),[p,h]=(0,l.useState)([]),[m,j]=(0,l.useState)(!1),[b,g]=(0,l.useState)(""),y=(0,d.d4)((e=>e.createUser.selectedPolicies)),f=(0,l.useCallback)((()=>{j(!0),u.F.policies.listPolicies().then((e=>{var s;const t=null!==(s=e.data.policies)&&void 0!==s?s:[];j(!1),h(t.sort(i.Hw))})).catch((e=>{j(!1),t((0,c.Dy)(e))}))}),[t]);(0,l.useEffect)((()=>{j(!0)}),[]),(0,l.useEffect)((()=>{m&&f()}),[m,f]);const v=p.filter((e=>e.name.includes(b)));return(0,x.jsxs)(n.xA9,{item:!0,xs:12,className:"inputItem",children:[m&&(0,x.jsx)(n.z21,{}),p.length>0?(0,x.jsxs)(l.Fragment,{children:[(0,x.jsx)(n.xA9,{item:!0,xs:12,className:"inputItem",children:(0,x.jsx)(o.A,{placeholder:"Start typing to search for a Policy",onChange:e=>{g(e)},value:b,label:s?"":"Assign Policies"})}),(0,x.jsx)(n.bQt,{columns:[{label:"Policy",elementKey:"name"}],onSelect:e=>{const s=e.target,l=s.value,n=s.checked;let i=[...y];n?i.push(l):i=i.filter((e=>e!==l)),i=i.filter((e=>""!==e)),t((0,a.Gy)(i))},selectedItems:y,isLoading:m,records:v,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,x.jsx)(n.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},74705:(e,s,t)=>{t.r(s),t.d(s,{default:()=>b});var l=t(65043),n=t(33097),i=t.n(n),o=t(22166),c=t(89923),r=t(56483),a=t(64159),d=t(20554),u=t(77403),x=t(62560),p=t(94141),h=t(42967),m=t(20649),j=t(70579);const b=e=>{let{closeModalAndRefresh:s,selectedUser:t,selectedGroups:n,open:b}=e;const g=(0,d.jL)(),[y,f]=(0,l.useState)(!1),[v,A]=(0,l.useState)([]),[S,C]=(0,l.useState)([]),P=(0,o.d4)((e=>e.createUser.selectedPolicies));(0,l.useEffect)((()=>{if(b){if(1===(null===n||void 0===n?void 0:n.length))return void(1===(null===n||void 0===n?void 0:n.length)&&m.A.invoke("GET","/api/v1/group/".concat((0,r.nf)(n[0]))).then((e=>{const s=i()(e,"policy","");A(s.split(",")),C(s.split(",")),g((0,x.Gy)(s.split(",")))})).catch((e=>{g((0,a.Dy)(e)),f(!1)})));const e=i()(t,"policy",[]);A(e),C(e),g((0,x.Gy)(e))}}),[b,null===n||void 0===n?void 0:n.length,t]);const G=i()(t,"accessKey","");return(0,j.jsxs)(p.A,{onClose:()=>{s()},modalOpen:b,title:"Set Policies",children:[(0,j.jsxs)(c.Hbc,{withBorders:!1,containerPadding:!1,children:[(1===(null===n||void 0===n?void 0:n.length)||null!=t)&&(0,j.jsxs)(l.Fragment,{children:[(0,j.jsx)(c.EmB,{label:"Selected ".concat(null!==n?"Group":"User"),sx:{width:"100%"},children:null!==n?n[0]:G}),(0,j.jsx)(c.EmB,{label:"Current Policy",sx:{width:"100%"},children:v.join(", ")})]}),n&&(null===n||void 0===n?void 0:n.length)>1&&(0,j.jsx)(c.EmB,{label:"Selected Groups",sx:{width:"100%"},children:n.join(", ")}),(0,j.jsx)(c.xA9,{item:!0,xs:12,children:(0,j.jsx)(h.A,{selectedPolicy:S})})]}),(0,j.jsxs)(c.xA9,{item:!0,xs:12,sx:u.Uz.modalButtonBar,children:[(0,j.jsx)(c.$nd,{id:"reset",type:"button",variant:"regular",onClick:()=>{C(v),g((0,x.Gy)(v))},label:"Reset"}),(0,j.jsx)(c.$nd,{id:"save",type:"button",variant:"callAction",color:"primary",disabled:y,onClick:()=>{let e=null,l=null;null!==n?l=n:null!==t&&(e=[t.accessKey]||0),f(!0),m.A.invoke("PUT","/api/v1/set-policy-multi",{name:P,groups:l,users:e}).then((()=>{f(!1),s()})).catch((e=>{f(!1),g((0,a.Dy)(e))}))},label:"Save"})]}),y&&(0,j.jsx)(c.xA9,{item:!0,xs:12,children:(0,j.jsx)(c.z21,{})})]})}},8185:(e,s,t)=>{t.d(s,{Hw:()=>n,LA:()=>l,SO:()=>i,rY:()=>o});const l=(e,s)=>{if(e.accessKey&&s.accessKey){if(e.accessKey>s.accessKey)return 1;if(e.accessKeye.name>s.name?1:e.namee>s?1:ee.policy>s.policy?1:e.policy.\n\nimport React, { Fragment, useState } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\n\ninterface IDeleteGroup {\n selectedGroups: string[];\n deleteOpen: boolean;\n closeDeleteModalAndRefresh: any;\n}\n\nconst DeleteGroup = ({\n selectedGroups,\n deleteOpen,\n closeDeleteModalAndRefresh,\n}: IDeleteGroup) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedGroups) {\n return null;\n }\n const onDeleteGroups = () => {\n for (let group of selectedGroups) {\n setLoadingDelete(true);\n api.group\n .removeGroup(encodeURLString(group))\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n }\n };\n\n const renderGroups = selectedGroups.map((group) => (\n

\n {group}\n
\n ));\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={loadingDelete}\n onConfirm={onDeleteGroups}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the following{\" \"}\n {selectedGroups.length === 1 ? \"\" : selectedGroups.length} group\n {selectedGroups.length > 1 ? \"s?\" : \"?\"}\n {renderGroups}\n \n }\n />\n );\n};\n\nexport default DeleteGroup;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { AddMembersToGroupIcon, Button, FormLayout, Grid, ReadBox } from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport UsersSelectors from \"./UsersSelectors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ntype UserPickerModalProps = {\n title?: string;\n preSelectedUsers?: string[];\n selectedGroup?: string;\n open: boolean;\n onClose: () => void;\n onSaveClick: () => void;\n groupStatus?: string;\n};\n\nconst AddGroupMember = ({\n title = \"\",\n groupStatus = \"enabled\",\n preSelectedUsers = [],\n selectedGroup = \"\",\n open,\n onClose,\n}: UserPickerModalProps) => {\n const dispatch = useAppDispatch();\n const [selectedUsers, setSelectedUsers] = useState(preSelectedUsers);\n\n function addMembersToGroup() {\n return api.group\n .updateGroup(encodeURLString(selectedGroup), {\n members: selectedUsers,\n status: groupStatus,\n })\n .then(() => {\n onClose();\n })\n .catch((err) => {\n onClose();\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n\n return (\n }\n >\n \n \n {selectedGroup}\n \n \n \n \n {\n setSelectedUsers(preSelectedUsers);\n }}\n label={\"Reset\"}\n />\n\n {\n addMembersToGroup();\n }}\n label={\"Save\"}\n />\n \n \n );\n};\n\nexport default AddGroupMember;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n GroupsIcon,\n IAMPoliciesIcon,\n PageLayout,\n ScreenTitle,\n SectionTitle,\n Switch,\n Tabs,\n TrashIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Group } from \"api/consoleApi\";\nimport {\n addUserToGroupPermissions,\n CONSOLE_UI_RESOURCE,\n createGroupPermissions,\n editGroupMembersPermissions,\n enableDisableGroupPermissions,\n getGroupPermissions,\n IAM_PAGES,\n listUsersPermissions,\n permissionTooltipHelper,\n setGroupPoliciesPermissions,\n viewPolicyPermissions,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { decodeURLString, encodeURLString } from \"../../../common/utils\";\nimport { setHelpName, setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport SetPolicy from \"../Policies/SetPolicy\";\nimport AddGroupMember from \"./AddGroupMember\";\nimport DeleteGroup from \"./DeleteGroup\";\nimport SearchBox from \"../Common/SearchBox\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\n\nexport const formatPolicy = (policy: string = \"\"): string[] => {\n if (policy.length <= 0) return [];\n return policy.split(\",\");\n};\n\nconst GroupsDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const [groupDetails, setGroupDetails] = useState({});\n const [policyOpen, setPolicyOpen] = useState(false);\n const [usersOpen, setUsersOpen] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [memberFilter, setMemberFilter] = useState(\"\");\n const [currentTab, setCurrentTab] = useState(\"members\");\n\n const groupName = decodeURLString(params.groupName || \"\");\n\n const { members = [], policy = \"\", status: groupEnabled } = groupDetails;\n\n const filteredMembers = members.filter((elementItem) =>\n elementItem.includes(memberFilter),\n );\n\n const viewUser = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewUserPermissions,\n true,\n );\n\n useEffect(() => {\n dispatch(setHelpName(\"group_details\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (groupName) {\n fetchGroupInfo();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [groupName]);\n\n const groupPolicies = formatPolicy(policy);\n const isGroupEnabled = groupEnabled === \"enabled\";\n const memberActionText = members.length > 0 ? \"Edit Members\" : \"Add Members\";\n\n const getGroupDetails = hasPermission(\n CONSOLE_UI_RESOURCE,\n getGroupPermissions,\n );\n\n const canEditGroupMembers = hasPermission(\n CONSOLE_UI_RESOURCE,\n editGroupMembersPermissions,\n true,\n );\n\n const canSetPolicies = hasPermission(\n CONSOLE_UI_RESOURCE,\n setGroupPoliciesPermissions,\n true,\n );\n\n const canViewPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n true,\n );\n\n function fetchGroupInfo() {\n if (getGroupDetails) {\n api.group\n .groupInfo(encodeURLString(groupName))\n .then((res) => {\n setGroupDetails(res.data);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setGroupDetails({});\n });\n }\n }\n\n function toggleGroupStatus(nextStatus: boolean) {\n return api.group\n .updateGroup(encodeURLString(groupName), {\n members: members,\n status: nextStatus ? \"enabled\" : \"disabled\",\n })\n .then(() => {\n fetchGroupInfo();\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n\n const groupsTabContent = (\n {\n dispatch(setHelpName(\"groups_members\"));\n }}\n >\n \n {\n setMemberFilter(searchText);\n }}\n value={memberFilter}\n sx={{\n maxWidth: 280,\n }}\n />\n \n \n }\n onClick={() => {\n setUsersOpen(true);\n }}\n disabled={!canEditGroupMembers}\n />\n \n \n \n }\n >\n Members\n \n \n \n \n {\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(userName)}`);\n },\n isDisabled: !viewUser,\n },\n ]}\n columns={[{ label: \"Access Key\" }]}\n selectedItems={[]}\n isLoading={false}\n records={filteredMembers}\n entityName=\"Users\"\n />\n \n \n \n \n );\n\n const policiesTabContent = (\n \n {\n dispatch(setHelpName(\"groups_policies\"));\n }}\n >\n \n }\n onClick={() => {\n setPolicyOpen(true);\n }}\n disabled={!canSetPolicies}\n />\n \n }\n >\n Policies\n \n \n \n \n {\n navigate(`${IAM_PAGES.POLICIES}/${encodeURLString(policy)}`);\n },\n isDisabled: !canViewPolicy,\n },\n ]}\n columns={[{ label: \"Policy\" }]}\n isLoading={false}\n records={groupPolicies}\n entityName=\"Policies\"\n />\n \n \n \n );\n\n return (\n \n {policyOpen ? (\n {\n setPolicyOpen(false);\n fetchGroupInfo();\n dispatch(setSelectedPolicies([]));\n }}\n />\n ) : null}\n\n {usersOpen ? (\n {}}\n title={memberActionText}\n groupStatus={groupEnabled}\n preSelectedUsers={members}\n open={usersOpen}\n onClose={() => {\n setUsersOpen(false);\n fetchGroupInfo();\n }}\n />\n ) : null}\n\n {deleteOpen && (\n {\n setDeleteOpen(false);\n if (isDelSuccess) {\n navigate(IAM_PAGES.GROUPS);\n }\n }}\n />\n )}\n \n navigate(IAM_PAGES.GROUPS)}\n />\n \n }\n actions={}\n />\n \n \n \n \n \n }\n title={groupName}\n subTitle={null}\n bottomBorder\n actions={\n \n Group Status:\n \n {isGroupEnabled ? \"Enabled\" : \"Disabled\"}\n \n \n \n {\n toggleGroupStatus(!isGroupEnabled);\n }}\n switchOnly\n />\n \n \n\n \n }\n onClick={() => {\n setDeleteOpen(true);\n }}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n\n \n \n \n \n \n );\n};\n\nexport default GroupsDetails;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\n\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedUsers: string[];\n setSelectedUsers: any;\n editMode?: boolean;\n}\n\nconst UsersSelectors = ({\n selectedUsers,\n setSelectedUsers,\n editMode = false,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchUsers = useCallback(() => {\n api.users\n .listUsers()\n .then((res) => {\n let users = get(res.data, \"users\", []);\n\n if (!users) {\n users = [];\n }\n\n setRecords(users.sort(usersSort));\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchUsers();\n }\n }, [loading, fetchUsers]);\n\n const selUsers = !selectedUsers ? [] : selectedUsers;\n\n //Fetch Actions\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selUsers]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedUsers(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n return (\n \n \n {loading && }\n {records?.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Users to display\n \n )}\n \n \n );\n};\n\nexport default UsersSelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Button, FormLayout, ReadBox, Grid, ProgressBar } from \"mds\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { User } from \"../Users/types\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport PolicySelectors from \"./PolicySelectors\";\nimport api from \"../../../common/api\";\n\ninterface ISetPolicyProps {\n closeModalAndRefresh: () => void;\n selectedUser: User | null;\n selectedGroups: string[] | null;\n open: boolean;\n}\n\nconst SetPolicy = ({\n closeModalAndRefresh,\n selectedUser,\n selectedGroups,\n open,\n}: ISetPolicyProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [loading, setLoading] = useState(false);\n const [actualPolicy, setActualPolicy] = useState([]);\n const [selectedPolicy, setSelectedPolicy] = useState([]);\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n const setPolicyAction = () => {\n let users = null;\n let groups = null;\n if (selectedGroups !== null) {\n groups = selectedGroups;\n } else {\n if (selectedUser !== null) {\n users = [selectedUser.accessKey] || [\" \"];\n }\n }\n\n setLoading(true);\n\n api\n .invoke(\"PUT\", `/api/v1/set-policy-multi`, {\n name: currentPolicies,\n groups: groups,\n users: users,\n })\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const fetchGroupInformation = () => {\n if (selectedGroups?.length === 1) {\n api\n .invoke(\"GET\", `/api/v1/group/${encodeURLString(selectedGroups[0])}`)\n .then((res: any) => {\n const groupPolicy: String = get(res, \"policy\", \"\");\n setActualPolicy(groupPolicy.split(\",\"));\n setSelectedPolicy(groupPolicy.split(\",\"));\n dispatch(setSelectedPolicies(groupPolicy.split(\",\")));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n setLoading(false);\n });\n }\n };\n\n const resetSelection = () => {\n setSelectedPolicy(actualPolicy);\n dispatch(setSelectedPolicies(actualPolicy));\n };\n\n useEffect(() => {\n if (open) {\n if (selectedGroups?.length === 1) {\n fetchGroupInformation();\n return;\n }\n\n const userPolicy: string[] = get(selectedUser, \"policy\", []);\n setActualPolicy(userPolicy);\n setSelectedPolicy(userPolicy);\n dispatch(setSelectedPolicies(userPolicy));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, selectedGroups?.length, selectedUser]);\n\n const userName = get(selectedUser, \"accessKey\", \"\");\n\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title=\"Set Policies\"\n >\n \n {(selectedGroups?.length === 1 || selectedUser != null) && (\n \n \n {selectedGroups !== null ? selectedGroups[0] : userName}\n \n \n {actualPolicy.join(\", \")}\n \n \n )}\n {selectedGroups && selectedGroups?.length > 1 && (\n \n {selectedGroups.join(\", \")}\n \n )}\n \n \n \n \n \n \n \n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default SetPolicy;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["_ref","selectedGroups","deleteOpen","closeDeleteModalAndRefresh","dispatch","useAppDispatch","loadingDelete","setLoadingDelete","useState","renderGroups","map","group","_jsx","children","ConfirmDialog","title","concat","length","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onDeleteGroups","api","removeGroup","encodeURLString","then","_","catch","async","err","res","json","setErrorSnackMessage","errorToHandler","finally","onClose","confirmationContent","_jsxs","Fragment","groupStatus","preSelectedUsers","selectedGroup","open","selectedUsers","setSelectedUsers","ModalWrapper","modalOpen","AddMembersToGroupIcon","FormLayout","withBorders","containerPadding","ReadBox","label","sx","width","UsersSelectors","editMode","Grid","item","xs","modalStyleUtils","modalButtonBar","Button","id","type","variant","onClick","updateGroup","members","status","setModalErrorSnackMessage","error","formatPolicy","policy","arguments","undefined","split","GroupsDetails","navigate","useNavigate","params","useParams","groupDetails","setGroupDetails","policyOpen","setPolicyOpen","usersOpen","setUsersOpen","setDeleteOpen","memberFilter","setMemberFilter","currentTab","setCurrentTab","groupName","decodeURLString","groupEnabled","filteredMembers","filter","elementItem","includes","viewUser","hasPermission","CONSOLE_UI_RESOURCE","viewUserPermissions","useEffect","setHelpName","fetchGroupInfo","groupPolicies","isGroupEnabled","memberActionText","getGroupDetails","getGroupPermissions","canEditGroupMembers","editGroupMembersPermissions","canSetPolicies","setGroupPoliciesPermissions","canViewPolicy","viewPolicyPermissions","groupInfo","data","groupsTabContent","Box","onMouseMove","SectionTitle","separator","marginBottom","actions","display","gap","SearchBox","placeholder","onChange","searchText","value","maxWidth","SecureComponent","resource","scopes","addUserToGroupPermissions","errorProps","disabled","TooltipWrapper","tooltip","permissionTooltipHelper","createGroupPermissions","icon","AddIcon","listUsersPermissions","DataTable","itemActions","userName","IAM_PAGES","USERS","isDisabled","columns","selectedItems","records","entityName","policiesTabContent","IAMPoliciesIcon","POLICIES","SetPolicy","selectedUser","closeModalAndRefresh","setSelectedPolicies","AddGroupMember","onSaveClick","DeleteGroup","isDelSuccess","GROUPS","PageHeaderWrapper","BackLink","HelpMenu","PageLayout","ScreenTitle","GroupsIcon","subTitle","bottomBorder","fontSize","alignItems","style","fontWeight","enableDisableGroupPermissions","matchAll","Switch","indicatorLabels","checked","name","nextStatus","switchOnly","TrashIcon","Tabs","options","tabConfig","content","currentTabOrPath","onTabClick","setRecords","loading","setFilter","fetchUsers","useCallback","users","listUsers","get","sort","usersSort","selUsers","filteredRecords","accessKey","className","ProgressBar","elementKey","onSelect","e","targetD","target","elements","push","element","idField","customPaperHeight","textAlign","padding","noTitle","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","policies","listPolicies","_res$data$policies","policySort","setLoading","actualPolicy","setActualPolicy","selectedPolicy","setSelectedPolicy","invoke","groupPolicy","userPolicy","join","PolicySelectors","resetSelection","color","setPolicyAction","groups","a","b","stringSort","policyDetailsSort"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/1324.cc645cb1.chunk.js b/web-app/build/static/js/1324.cc645cb1.chunk.js new file mode 100644 index 000000000..a5c60ac1d --- /dev/null +++ b/web-app/build/static/js/1324.cc645cb1.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[1324,5851,4705],{85851:(e,s,t)=>{t.r(s),t.d(s,{default:()=>u});var l=t(65043),n=t(89923),i=t(64159),o=t(20554),r=t(58661),c=t(56629),a=t(53518),d=t(70579);const u=e=>{let{selectedGroups:s,deleteOpen:t,closeDeleteModalAndRefresh:u}=e;const p=(0,o.jL)(),[x,h]=(0,l.useState)(!1);if(!s)return null;const m=s.map((e=>(0,d.jsx)("div",{children:(0,d.jsx)("b",{children:e})},e)));return(0,d.jsx)(r.A,{title:"Delete Group".concat(s.length>1?"s":""),confirmText:"Delete",isOpen:t,titleIcon:(0,d.jsx)(n.xWY,{}),isLoading:x,onConfirm:()=>{for(let e of s)h(!0),c.F.group.removeGroup(e).then((e=>{u(!0)})).catch((async e=>{const s=await e.json();p((0,i.C9)((0,a.S)(s))),u(!1)})).finally((()=>h(!1)))},onClose:()=>u(!1),confirmationContent:(0,d.jsxs)(l.Fragment,{children:["Are you sure you want to delete the following"," ",1===s.length?"":s.length," group",s.length>1?"s?":"?",m]})})}},91324:(e,s,t)=>{t.r(s),t.d(s,{default:()=>P,formatPolicy:()=>C});var l=t(65043),n=t(73216),i=t(89923),o=t(56629),r=t(53518),c=t(99161),a=t(77938),d=t(64159),u=t(20554),p=t(62560),x=t(74705),h=t(77403),m=t(22923),j=t(94141),g=t(70579);const b=e=>{let{title:s="",groupStatus:t="enabled",preSelectedUsers:n=[],selectedGroup:c="",open:a,onClose:p}=e;const x=(0,u.jL)(),[b,y]=(0,l.useState)(n);return(0,g.jsxs)(j.A,{modalOpen:a,onClose:p,title:s,titleIcon:(0,g.jsx)(i.WC,{}),children:[(0,g.jsxs)(i.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,g.jsx)(i.EmB,{label:"Selected Group",sx:{width:"100%"},children:c}),(0,g.jsx)(m.A,{selectedUsers:b,setSelectedUsers:y,editMode:!c})]}),(0,g.jsxs)(i.xA9,{item:!0,xs:12,sx:h.Uz.modalButtonBar,children:[(0,g.jsx)(i.$nd,{id:"reset-add-group-member",type:"button",variant:"regular",onClick:()=>{y(n)},label:"Reset"}),(0,g.jsx)(i.$nd,{id:"save-add-group-member",type:"button",variant:"callAction",onClick:()=>{o.F.group.updateGroup(c,{members:b,status:t}).then((()=>{p()})).catch((e=>{p(),x((0,d.Dy)((0,r.S)(e.error)))}))},label:"Save"})]})]})};var y=t(85851),v=t(64681),f=t(6681),A=t(55968),S=t(48793);const C=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.length<=0?[]:e.split(",")},P=()=>{const e=(0,u.jL)(),s=(0,n.Zp)(),t=(0,n.g)(),[h,m]=(0,l.useState)({}),[j,P]=(0,l.useState)(!1),[G,U]=(0,l.useState)(!1),[M,k]=(0,l.useState)(!1),[w,E]=(0,l.useState)(""),[z,L]=(0,l.useState)("members"),{members:N=[],policy:R="",status:D}=h,F=N.filter((e=>e.includes(w))),I=(0,a._)(c.Ms,c.Ld,!0);(0,l.useEffect)((()=>{e((0,d.ph)("group_details"))}),[]),(0,l.useEffect)((()=>{t.groupName&&T()}),[t.groupName]);const K=C(R),B="enabled"===D,_=N.length>0?"Edit Members":"Add Members",O=(0,a._)(c.Ms,c.Oh),$=(0,a._)(c.Ms,c.Hr,!0),H=(0,a._)(c.Ms,c.QR,!0),J=(0,a._)(c.Ms,c.yv,!0);function T(){O&&o.F.group.groupInfo(t.groupName||"").then((e=>{m(e.data)})).catch((s=>{e((0,d.Dy)((0,r.S)(s.error))),m({})}))}const Q=(0,g.jsxs)(i.azJ,{onMouseMove:()=>{e((0,d.ph)("groups_members"))},children:[(0,g.jsx)(i._xt,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsxs)(i.azJ,{sx:{display:"flex",gap:10},children:[(0,g.jsx)(v.A,{placeholder:"Search members",onChange:e=>{E(e)},value:w,sx:{maxWidth:280}}),(0,g.jsx)(a.R,{resource:c.Ms,scopes:c.BD,errorProps:{disabled:!0},children:(0,g.jsx)(f.A,{tooltip:$?_:(0,c.vj)(c.k1,"edit Group membership"),children:(0,g.jsx)(i.$nd,{id:"add-user-group",label:_,variant:"callAction",icon:(0,g.jsx)(i.REV,{}),onClick:()=>{U(!0)},disabled:!$})})})]}),children:"Members"}),(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(a.R,{resource:c.Ms,scopes:c.x6,errorProps:{disabled:!0},children:(0,g.jsx)(f.A,{tooltip:I?"":(0,c.vj)(c.Ld,"view User details"),children:(0,g.jsx)(i.bQt,{itemActions:[{type:"view",onClick:e=>{s("".concat(c.zZ.USERS,"/").concat(encodeURIComponent(e)))},isDisabled:!I}],columns:[{label:"Access Key"}],selectedItems:[],isLoading:!1,records:F,entityName:"Users"})})})})]}),Z=(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(i.azJ,{onMouseMove:()=>{e((0,d.ph)("groups_policies"))},children:(0,g.jsx)(i._xt,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsx)(f.A,{tooltip:H?"Set Policies":(0,c.vj)(c.QR,"assign Policies"),children:(0,g.jsx)(i.$nd,{id:"set-policies",label:"Set Policies",variant:"callAction",icon:(0,g.jsx)(i.n$X,{}),onClick:()=>{P(!0)},disabled:!H})}),children:"Policies"})}),(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(f.A,{tooltip:J?"":(0,c.vj)(c.yv,"view Policy details"),children:(0,g.jsx)(i.bQt,{itemActions:[{type:"view",onClick:e=>{s("".concat(c.zZ.POLICIES,"/").concat(encodeURIComponent(e)))},isDisabled:!J}],columns:[{label:"Policy"}],isLoading:!1,records:K,entityName:"Policies"})})})]});return(0,g.jsxs)(l.Fragment,{children:[j?(0,g.jsx)(x.default,{open:j,selectedGroups:[t.groupName||""],selectedUser:null,closeModalAndRefresh:()=>{P(!1),T(),e((0,p.Gy)([]))}}):null,G?(0,g.jsx)(b,{selectedGroup:t.groupName,onSaveClick:()=>{},title:_,groupStatus:D,preSelectedUsers:N,open:G,onClose:()=>{U(!1),T()}}):null,M&&(0,g.jsx)(y.default,{deleteOpen:M,selectedGroups:[t.groupName||""],closeDeleteModalAndRefresh:e=>{k(!1),e&&s(c.zZ.GROUPS)}}),(0,g.jsx)(S.A,{label:(0,g.jsx)(l.Fragment,{children:(0,g.jsx)(i.EGL,{label:"Groups",onClick:()=>s(c.zZ.GROUPS)})}),actions:(0,g.jsx)(A.A,{})}),(0,g.jsxs)(i.Mxu,{children:[(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(i.lcx,{icon:(0,g.jsx)(l.Fragment,{children:(0,g.jsx)(i.YXz,{width:40})}),title:t.groupName||"",subTitle:null,bottomBorder:!0,actions:(0,g.jsxs)(i.azJ,{sx:{display:"flex",fontSize:14,alignItems:"center",gap:15},children:[(0,g.jsx)("span",{children:"Group Status:"}),(0,g.jsx)("span",{id:"group-status-label",style:{fontWeight:"bold"},children:B?"Enabled":"Disabled"}),(0,g.jsx)(f.A,{tooltip:(0,a._)(c.Ms,c.pf,!0)?"":(0,c.vj)(c.pf,"enable or disable Groups"),children:(0,g.jsx)(a.R,{resource:c.Ms,scopes:c.pf,errorProps:{disabled:!0},matchAll:!0,children:(0,g.jsx)(i.dOG,{indicatorLabels:["Enabled","Disabled"],checked:B,value:"group_enabled",id:"group-status",name:"group-status",onChange:()=>{var s;s=!B,o.F.group.updateGroup(t.groupName||"",{members:N,status:s?"enabled":"disabled"}).then((()=>{T()})).catch((s=>{e((0,d.Dy)((0,r.S)(s.error)))}))},switchOnly:!0})})}),(0,g.jsx)(f.A,{tooltip:"Delete Group",children:(0,g.jsx)(i.$nd,{id:"delete-user-group",variant:"secondary",icon:(0,g.jsx)(i.ucK,{}),onClick:()=>{k(!0)}})})]}),sx:{marginBottom:15}})}),(0,g.jsx)(i.xA9,{item:!0,xs:12,children:(0,g.jsx)(i.tUM,{options:[{tabConfig:{id:"members",label:"Members"},content:Q},{tabConfig:{id:"policies",label:"Policies"},content:Z}],currentTabOrPath:z,onTabClick:L})})]})]})}},22923:(e,s,t)=>{t.d(s,{A:()=>h});var l=t(65043),n=t(33097),i=t.n(n),o=t(56629),r=t(53518),c=t(89923),a=t(8185),d=t(64159),u=t(20554),p=t(64681),x=t(70579);const h=e=>{let{selectedUsers:s,setSelectedUsers:t,editMode:n=!1}=e;const h=(0,u.jL)(),[m,j]=(0,l.useState)([]),[g,b]=(0,l.useState)(!1),[y,v]=(0,l.useState)(""),f=(0,l.useCallback)((()=>{o.F.users.listUsers().then((e=>{let s=i()(e.data,"users",[]);s||(s=[]),j(s.sort(a.LA)),b(!1)})).catch((e=>{h((0,d.Dy)((0,r.S)(e.error))),b(!1)}))}),[h]);(0,l.useEffect)((()=>{b(!0)}),[]),(0,l.useEffect)((()=>{g&&f()}),[g,f]);const A=s||[],S=m.filter((e=>e.accessKey.includes(y)));return(0,x.jsx)(c.xA9,{item:!0,xs:12,className:"inputItem",children:(0,x.jsxs)(c.azJ,{children:[g&&(0,x.jsx)(c.z21,{}),(null===m||void 0===m?void 0:m.length)>0?(0,x.jsxs)(l.Fragment,{children:[(0,x.jsx)(c.xA9,{item:!0,xs:12,className:"inputItem",children:(0,x.jsx)(p.A,{label:n?"Edit Members":"Assign Users",placeholder:"Filter Users",onChange:v,value:y})}),(0,x.jsx)(c.bQt,{columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:e=>{const s=e.target,l=s.value,n=s.checked;let i=[...A];return n?i.push(l):i=i.filter((e=>e!==l)),t(i),i},selectedItems:A,isLoading:g,records:S,entityName:"Users",idField:"accessKey",customPaperHeight:"200px"})]}):(0,x.jsx)(c.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Users to display"})]})})}},42967:(e,s,t)=>{t.d(s,{A:()=>x});var l=t(65043),n=t(89923),i=t(8185),o=t(64681),r=t(64159),c=t(20554),a=t(62560),d=t(22166),u=t(56629),p=t(70579);const x=e=>{let{noTitle:s=!1}=e;const t=(0,c.jL)(),[x,h]=(0,l.useState)([]),[m,j]=(0,l.useState)(!1),[g,b]=(0,l.useState)(""),y=(0,d.d4)((e=>e.createUser.selectedPolicies)),v=(0,l.useCallback)((()=>{j(!0),u.F.policies.listPolicies().then((e=>{var s;const t=null!==(s=e.data.policies)&&void 0!==s?s:[];j(!1),h(t.sort(i.Hw))})).catch((e=>{j(!1),t((0,r.Dy)(e))}))}),[t]);(0,l.useEffect)((()=>{j(!0)}),[]),(0,l.useEffect)((()=>{m&&v()}),[m,v]);const f=x.filter((e=>e.name.includes(g)));return(0,p.jsxs)(n.xA9,{item:!0,xs:12,className:"inputItem",children:[m&&(0,p.jsx)(n.z21,{}),x.length>0?(0,p.jsxs)(l.Fragment,{children:[(0,p.jsx)(n.xA9,{item:!0,xs:12,className:"inputItem",children:(0,p.jsx)(o.A,{placeholder:"Start typing to search for a Policy",onChange:e=>{b(e)},value:g,label:s?"":"Assign Policies"})}),(0,p.jsx)(n.bQt,{columns:[{label:"Policy",elementKey:"name"}],onSelect:e=>{const s=e.target,l=s.value,n=s.checked;let i=[...y];n?i.push(l):i=i.filter((e=>e!==l)),i=i.filter((e=>""!==e)),t((0,a.Gy)(i))},selectedItems:y,isLoading:m,records:f,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,p.jsx)(n.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},74705:(e,s,t)=>{t.r(s),t.d(s,{default:()=>j});var l=t(65043),n=t(33097),i=t.n(n),o=t(22166),r=t(89923),c=t(64159),a=t(20554),d=t(77403),u=t(62560),p=t(94141),x=t(42967),h=t(20649),m=t(70579);const j=e=>{let{closeModalAndRefresh:s,selectedUser:t,selectedGroups:n,open:j}=e;const g=(0,a.jL)(),[b,y]=(0,l.useState)(!1),[v,f]=(0,l.useState)([]),[A,S]=(0,l.useState)([]),C=(0,o.d4)((e=>e.createUser.selectedPolicies));(0,l.useEffect)((()=>{if(j){if(1===(null===n||void 0===n?void 0:n.length))return void(1===(null===n||void 0===n?void 0:n.length)&&h.A.invoke("GET","/api/v1/group/".concat(encodeURIComponent(n[0]))).then((e=>{const s=i()(e,"policy","");f(s.split(",")),S(s.split(",")),g((0,u.Gy)(s.split(",")))})).catch((e=>{g((0,c.Dy)(e)),y(!1)})));const e=i()(t,"policy",[]);f(e),S(e),g((0,u.Gy)(e))}}),[j,null===n||void 0===n?void 0:n.length,t]);const P=i()(t,"accessKey","");return(0,m.jsxs)(p.A,{onClose:()=>{s()},modalOpen:j,title:"Set Policies",children:[(0,m.jsxs)(r.Hbc,{withBorders:!1,containerPadding:!1,children:[(1===(null===n||void 0===n?void 0:n.length)||null!=t)&&(0,m.jsxs)(l.Fragment,{children:[(0,m.jsx)(r.EmB,{label:"Selected ".concat(null!==n?"Group":"User"),sx:{width:"100%"},children:null!==n?n[0]:P}),(0,m.jsx)(r.EmB,{label:"Current Policy",sx:{width:"100%"},children:v.join(", ")})]}),n&&(null===n||void 0===n?void 0:n.length)>1&&(0,m.jsx)(r.EmB,{label:"Selected Groups",sx:{width:"100%"},children:n.join(", ")}),(0,m.jsx)(r.xA9,{item:!0,xs:12,children:(0,m.jsx)(x.A,{selectedPolicy:A})})]}),(0,m.jsxs)(r.xA9,{item:!0,xs:12,sx:d.Uz.modalButtonBar,children:[(0,m.jsx)(r.$nd,{id:"reset",type:"button",variant:"regular",onClick:()=>{S(v),g((0,u.Gy)(v))},label:"Reset"}),(0,m.jsx)(r.$nd,{id:"save",type:"button",variant:"callAction",color:"primary",disabled:b,onClick:()=>{let e=null,l=null;null!==n?l=n:null!==t&&(e=[t.accessKey]||0),y(!0),h.A.invoke("PUT","/api/v1/set-policy-multi",{name:C,groups:l,users:e}).then((()=>{y(!1),s()})).catch((e=>{y(!1),g((0,c.Dy)(e))}))},label:"Save"})]}),b&&(0,m.jsx)(r.xA9,{item:!0,xs:12,children:(0,m.jsx)(r.z21,{})})]})}},8185:(e,s,t)=>{t.d(s,{Hw:()=>n,LA:()=>l,SO:()=>i,rY:()=>o});const l=(e,s)=>{if(e.accessKey&&s.accessKey){if(e.accessKey>s.accessKey)return 1;if(e.accessKeye.name>s.name?1:e.namee>s?1:ee.policy>s.policy?1:e.policy.\n\nimport React, { Fragment, useState } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\n\ninterface IDeleteGroup {\n selectedGroups: string[];\n deleteOpen: boolean;\n closeDeleteModalAndRefresh: any;\n}\n\nconst DeleteGroup = ({\n selectedGroups,\n deleteOpen,\n closeDeleteModalAndRefresh,\n}: IDeleteGroup) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedGroups) {\n return null;\n }\n const onDeleteGroups = () => {\n for (let group of selectedGroups) {\n setLoadingDelete(true);\n api.group\n .removeGroup(group)\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n }\n };\n\n const renderGroups = selectedGroups.map((group) => (\n
\n {group}\n
\n ));\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={loadingDelete}\n onConfirm={onDeleteGroups}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the following{\" \"}\n {selectedGroups.length === 1 ? \"\" : selectedGroups.length} group\n {selectedGroups.length > 1 ? \"s?\" : \"?\"}\n {renderGroups}\n \n }\n />\n );\n};\n\nexport default DeleteGroup;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { AddMembersToGroupIcon, Button, FormLayout, Grid, ReadBox } from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport UsersSelectors from \"./UsersSelectors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ntype UserPickerModalProps = {\n title?: string;\n preSelectedUsers?: string[];\n selectedGroup?: string;\n open: boolean;\n onClose: () => void;\n onSaveClick: () => void;\n groupStatus?: string;\n};\n\nconst AddGroupMember = ({\n title = \"\",\n groupStatus = \"enabled\",\n preSelectedUsers = [],\n selectedGroup = \"\",\n open,\n onClose,\n}: UserPickerModalProps) => {\n const dispatch = useAppDispatch();\n const [selectedUsers, setSelectedUsers] = useState(preSelectedUsers);\n\n function addMembersToGroup() {\n return api.group\n .updateGroup(selectedGroup, {\n members: selectedUsers,\n status: groupStatus,\n })\n .then(() => {\n onClose();\n })\n .catch((err) => {\n onClose();\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n\n return (\n }\n >\n \n \n {selectedGroup}\n \n \n \n \n {\n setSelectedUsers(preSelectedUsers);\n }}\n label={\"Reset\"}\n />\n\n {\n addMembersToGroup();\n }}\n label={\"Save\"}\n />\n \n \n );\n};\n\nexport default AddGroupMember;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n GroupsIcon,\n IAMPoliciesIcon,\n PageLayout,\n ScreenTitle,\n SectionTitle,\n Switch,\n Tabs,\n TrashIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Group } from \"api/consoleApi\";\nimport {\n addUserToGroupPermissions,\n CONSOLE_UI_RESOURCE,\n createGroupPermissions,\n editGroupMembersPermissions,\n enableDisableGroupPermissions,\n getGroupPermissions,\n IAM_PAGES,\n listUsersPermissions,\n permissionTooltipHelper,\n setGroupPoliciesPermissions,\n viewPolicyPermissions,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { setHelpName, setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport SetPolicy from \"../Policies/SetPolicy\";\nimport AddGroupMember from \"./AddGroupMember\";\nimport DeleteGroup from \"./DeleteGroup\";\nimport SearchBox from \"../Common/SearchBox\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\n\nexport const formatPolicy = (policy: string = \"\"): string[] => {\n if (policy.length <= 0) return [];\n return policy.split(\",\");\n};\n\nconst GroupsDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const [groupDetails, setGroupDetails] = useState({});\n const [policyOpen, setPolicyOpen] = useState(false);\n const [usersOpen, setUsersOpen] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [memberFilter, setMemberFilter] = useState(\"\");\n const [currentTab, setCurrentTab] = useState(\"members\");\n\n const { members = [], policy = \"\", status: groupEnabled } = groupDetails;\n\n const filteredMembers = members.filter((elementItem) =>\n elementItem.includes(memberFilter),\n );\n\n const viewUser = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewUserPermissions,\n true,\n );\n\n useEffect(() => {\n dispatch(setHelpName(\"group_details\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (params.groupName) {\n fetchGroupInfo();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [params.groupName]);\n\n const groupPolicies = formatPolicy(policy);\n const isGroupEnabled = groupEnabled === \"enabled\";\n const memberActionText = members.length > 0 ? \"Edit Members\" : \"Add Members\";\n\n const getGroupDetails = hasPermission(\n CONSOLE_UI_RESOURCE,\n getGroupPermissions,\n );\n\n const canEditGroupMembers = hasPermission(\n CONSOLE_UI_RESOURCE,\n editGroupMembersPermissions,\n true,\n );\n\n const canSetPolicies = hasPermission(\n CONSOLE_UI_RESOURCE,\n setGroupPoliciesPermissions,\n true,\n );\n\n const canViewPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n true,\n );\n\n function fetchGroupInfo() {\n if (getGroupDetails) {\n api.group\n .groupInfo(params.groupName || \"\")\n .then((res) => {\n setGroupDetails(res.data);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setGroupDetails({});\n });\n }\n }\n\n function toggleGroupStatus(nextStatus: boolean) {\n return api.group\n .updateGroup(params.groupName || \"\", {\n members: members,\n status: nextStatus ? \"enabled\" : \"disabled\",\n })\n .then(() => {\n fetchGroupInfo();\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n\n const groupsTabContent = (\n {\n dispatch(setHelpName(\"groups_members\"));\n }}\n >\n \n {\n setMemberFilter(searchText);\n }}\n value={memberFilter}\n sx={{\n maxWidth: 280,\n }}\n />\n \n \n }\n onClick={() => {\n setUsersOpen(true);\n }}\n disabled={!canEditGroupMembers}\n />\n \n \n \n }\n >\n Members\n \n \n \n \n {\n navigate(\n `${IAM_PAGES.USERS}/${encodeURIComponent(userName)}`,\n );\n },\n isDisabled: !viewUser,\n },\n ]}\n columns={[{ label: \"Access Key\" }]}\n selectedItems={[]}\n isLoading={false}\n records={filteredMembers}\n entityName=\"Users\"\n />\n \n \n \n \n );\n\n const policiesTabContent = (\n \n {\n dispatch(setHelpName(\"groups_policies\"));\n }}\n >\n \n }\n onClick={() => {\n setPolicyOpen(true);\n }}\n disabled={!canSetPolicies}\n />\n \n }\n >\n Policies\n \n \n \n \n {\n navigate(\n `${IAM_PAGES.POLICIES}/${encodeURIComponent(policy)}`,\n );\n },\n isDisabled: !canViewPolicy,\n },\n ]}\n columns={[{ label: \"Policy\" }]}\n isLoading={false}\n records={groupPolicies}\n entityName=\"Policies\"\n />\n \n \n \n );\n\n return (\n \n {policyOpen ? (\n {\n setPolicyOpen(false);\n fetchGroupInfo();\n dispatch(setSelectedPolicies([]));\n }}\n />\n ) : null}\n\n {usersOpen ? (\n {}}\n title={memberActionText}\n groupStatus={groupEnabled}\n preSelectedUsers={members}\n open={usersOpen}\n onClose={() => {\n setUsersOpen(false);\n fetchGroupInfo();\n }}\n />\n ) : null}\n\n {deleteOpen && (\n {\n setDeleteOpen(false);\n if (isDelSuccess) {\n navigate(IAM_PAGES.GROUPS);\n }\n }}\n />\n )}\n \n navigate(IAM_PAGES.GROUPS)}\n />\n \n }\n actions={}\n />\n \n \n \n \n \n }\n title={params.groupName || \"\"}\n subTitle={null}\n bottomBorder\n actions={\n \n Group Status:\n \n {isGroupEnabled ? \"Enabled\" : \"Disabled\"}\n \n \n \n {\n toggleGroupStatus(!isGroupEnabled);\n }}\n switchOnly\n />\n \n \n\n \n }\n onClick={() => {\n setDeleteOpen(true);\n }}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n\n \n \n \n \n \n );\n};\n\nexport default GroupsDetails;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\n\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedUsers: string[];\n setSelectedUsers: any;\n editMode?: boolean;\n}\n\nconst UsersSelectors = ({\n selectedUsers,\n setSelectedUsers,\n editMode = false,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchUsers = useCallback(() => {\n api.users\n .listUsers()\n .then((res) => {\n let users = get(res.data, \"users\", []);\n\n if (!users) {\n users = [];\n }\n\n setRecords(users.sort(usersSort));\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchUsers();\n }\n }, [loading, fetchUsers]);\n\n const selUsers = !selectedUsers ? [] : selectedUsers;\n\n //Fetch Actions\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selUsers]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedUsers(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n return (\n \n \n {loading && }\n {records?.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Users to display\n \n )}\n \n \n );\n};\n\nexport default UsersSelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Button, FormLayout, ReadBox, Grid, ProgressBar } from \"mds\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { User } from \"../Users/types\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport PolicySelectors from \"./PolicySelectors\";\nimport api from \"../../../common/api\";\n\ninterface ISetPolicyProps {\n closeModalAndRefresh: () => void;\n selectedUser: User | null;\n selectedGroups: string[] | null;\n open: boolean;\n}\n\nconst SetPolicy = ({\n closeModalAndRefresh,\n selectedUser,\n selectedGroups,\n open,\n}: ISetPolicyProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [loading, setLoading] = useState(false);\n const [actualPolicy, setActualPolicy] = useState([]);\n const [selectedPolicy, setSelectedPolicy] = useState([]);\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n const setPolicyAction = () => {\n let users = null;\n let groups = null;\n if (selectedGroups !== null) {\n groups = selectedGroups;\n } else {\n if (selectedUser !== null) {\n users = [selectedUser.accessKey] || [\" \"];\n }\n }\n\n setLoading(true);\n\n api\n .invoke(\"PUT\", `/api/v1/set-policy-multi`, {\n name: currentPolicies,\n groups: groups,\n users: users,\n })\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const fetchGroupInformation = () => {\n if (selectedGroups?.length === 1) {\n api\n .invoke(\"GET\", `/api/v1/group/${encodeURIComponent(selectedGroups[0])}`)\n .then((res: any) => {\n const groupPolicy: String = get(res, \"policy\", \"\");\n setActualPolicy(groupPolicy.split(\",\"));\n setSelectedPolicy(groupPolicy.split(\",\"));\n dispatch(setSelectedPolicies(groupPolicy.split(\",\")));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n setLoading(false);\n });\n }\n };\n\n const resetSelection = () => {\n setSelectedPolicy(actualPolicy);\n dispatch(setSelectedPolicies(actualPolicy));\n };\n\n useEffect(() => {\n if (open) {\n if (selectedGroups?.length === 1) {\n fetchGroupInformation();\n return;\n }\n\n const userPolicy: string[] = get(selectedUser, \"policy\", []);\n setActualPolicy(userPolicy);\n setSelectedPolicy(userPolicy);\n dispatch(setSelectedPolicies(userPolicy));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, selectedGroups?.length, selectedUser]);\n\n const userName = get(selectedUser, \"accessKey\", \"\");\n\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title=\"Set Policies\"\n >\n \n {(selectedGroups?.length === 1 || selectedUser != null) && (\n \n \n {selectedGroups !== null ? selectedGroups[0] : userName}\n \n \n {actualPolicy.join(\", \")}\n \n \n )}\n {selectedGroups && selectedGroups?.length > 1 && (\n \n {selectedGroups.join(\", \")}\n \n )}\n \n \n \n \n \n \n \n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default SetPolicy;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["_ref","selectedGroups","deleteOpen","closeDeleteModalAndRefresh","dispatch","useAppDispatch","loadingDelete","setLoadingDelete","useState","renderGroups","map","group","_jsx","children","ConfirmDialog","title","concat","length","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onDeleteGroups","api","removeGroup","then","_","catch","async","err","res","json","setErrorSnackMessage","errorToHandler","finally","onClose","confirmationContent","_jsxs","Fragment","groupStatus","preSelectedUsers","selectedGroup","open","selectedUsers","setSelectedUsers","ModalWrapper","modalOpen","AddMembersToGroupIcon","FormLayout","withBorders","containerPadding","ReadBox","label","sx","width","UsersSelectors","editMode","Grid","item","xs","modalStyleUtils","modalButtonBar","Button","id","type","variant","onClick","updateGroup","members","status","setModalErrorSnackMessage","error","formatPolicy","policy","arguments","undefined","split","GroupsDetails","navigate","useNavigate","params","useParams","groupDetails","setGroupDetails","policyOpen","setPolicyOpen","usersOpen","setUsersOpen","setDeleteOpen","memberFilter","setMemberFilter","currentTab","setCurrentTab","groupEnabled","filteredMembers","filter","elementItem","includes","viewUser","hasPermission","CONSOLE_UI_RESOURCE","viewUserPermissions","useEffect","setHelpName","groupName","fetchGroupInfo","groupPolicies","isGroupEnabled","memberActionText","getGroupDetails","getGroupPermissions","canEditGroupMembers","editGroupMembersPermissions","canSetPolicies","setGroupPoliciesPermissions","canViewPolicy","viewPolicyPermissions","groupInfo","data","groupsTabContent","Box","onMouseMove","SectionTitle","separator","marginBottom","actions","display","gap","SearchBox","placeholder","onChange","searchText","value","maxWidth","SecureComponent","resource","scopes","addUserToGroupPermissions","errorProps","disabled","TooltipWrapper","tooltip","permissionTooltipHelper","createGroupPermissions","icon","AddIcon","listUsersPermissions","DataTable","itemActions","userName","IAM_PAGES","USERS","encodeURIComponent","isDisabled","columns","selectedItems","records","entityName","policiesTabContent","IAMPoliciesIcon","POLICIES","SetPolicy","selectedUser","closeModalAndRefresh","setSelectedPolicies","AddGroupMember","onSaveClick","DeleteGroup","isDelSuccess","GROUPS","PageHeaderWrapper","BackLink","HelpMenu","PageLayout","ScreenTitle","GroupsIcon","subTitle","bottomBorder","fontSize","alignItems","style","fontWeight","enableDisableGroupPermissions","matchAll","Switch","indicatorLabels","checked","name","nextStatus","switchOnly","TrashIcon","Tabs","options","tabConfig","content","currentTabOrPath","onTabClick","setRecords","loading","setFilter","fetchUsers","useCallback","users","listUsers","get","sort","usersSort","selUsers","filteredRecords","accessKey","className","ProgressBar","elementKey","onSelect","e","targetD","target","elements","push","element","idField","customPaperHeight","textAlign","padding","noTitle","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","policies","listPolicies","_res$data$policies","policySort","setLoading","actualPolicy","setActualPolicy","selectedPolicy","setSelectedPolicy","invoke","groupPolicy","userPolicy","join","PolicySelectors","resetSelection","color","setPolicyAction","groups","a","b","stringSort","policyDetailsSort"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/1370.a3d466ac.chunk.js b/web-app/build/static/js/1370.a3d466ac.chunk.js new file mode 100644 index 000000000..53b50323e --- /dev/null +++ b/web-app/build/static/js/1370.a3d466ac.chunk.js @@ -0,0 +1,2 @@ +(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[1370],{41206:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var r=n(65043),o=n(89923),i=n(61476),a=n.n(i),s=n(6681),c=n(70579);const l=e=>{let{value:t,label:n="",tooltip:i="",mode:l="json",onChange:d,editorHeight:p=250,helptip:u}=e;return(0,c.jsx)(o.BYM,{value:t,onChange:e=>d(e),mode:l,tooltip:i,editorHeight:p,label:n,helpTools:(0,c.jsx)(r.Fragment,{children:(0,c.jsx)(s.A,{tooltip:"Copy to Clipboard",children:(0,c.jsx)(a(),{text:t,children:(0,c.jsx)(o.$nd,{type:"button",id:"copy-code-mirror",icon:(0,c.jsx)(o.TdU,{}),color:"primary",variant:"regular"})})})}),helpTip:u,helpTipPlacement:"right"})}},71435:(e,t,n)=>{"use strict";n.d(t,{CS:()=>a,Ez:()=>r,WJ:()=>o,Zb:()=>i});const r={RED:"#C83B51",GREEN:"#4CCB92",YELLOW:"#FFBD62"},o=(e,t)=>e<=t/2?"bad":2!==t&&e===t/2+1?"warn":e===t?"good":void 0,i=e=>{switch(e){case"offline":return"bad";case"online":return"good";default:return"warn"}},a=(e,t)=>e<=t/2?"bad":e===t/2+1?"warn":e===t?"good":void 0},81370:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>O});var r=n(65043),o=n(22166),i=n(73216),a=n(89923),s=n(77403),c=n(41206),l=n(99161),d=n(77938),p=n(72237),u=n(64681),x=n(71435),h=n(70579);const f={display:"grid",gridTemplateColumns:"70px 1fr",gap:15},m=e=>{let{search:t="",children:n=""}=e;const r=new RegExp("(".concat(function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}(t),")"),"i"),o=String(n).split(r);return t?o.map(((e,t)=>r.test(e)?(0,h.jsx)("mark",{children:e},t):e)):n},y=e=>{let{policyStatements:t}=e;const[n,o]=(0,r.useState)("");return(0,h.jsxs)(a.xA9,{container:!0,children:[(0,h.jsx)(a.xA9,{item:!0,xs:12,children:(0,h.jsxs)(a.xA9,{container:!0,sx:{display:"flex",alignItems:"center"},children:[(0,h.jsx)(a.V7x,{content:(0,h.jsxs)(r.Fragment,{children:["Define which actions are permitted on a specified resource. Learn more about"," ",(0,h.jsx)("a",{target:"blank",href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html",children:"IAM conditional statements"}),"."]}),placement:"right",children:(0,h.jsx)(a.xA9,{item:!0,xs:12,sm:6,sx:{fontWeight:"bold"},children:"Statements"})}),(0,h.jsx)(a.xA9,{item:!0,xs:12,sm:6,sx:{display:"flex",justifyContent:"flex-end"},children:(0,h.jsx)(u.A,{placeholder:"Search",onChange:o,value:n,sx:{maxWidth:380}})})]})}),!t&&(0,h.jsx)(r.Fragment,{children:"Policy has no statements"}),t&&(0,h.jsx)(a.xA9,{item:!0,xs:12,sx:{"& .policy-row":{borderBottom:"1px solid #eaeaea"},"& .policy-row:first-child":{borderTop:"1px solid #eaeaea"},"& .policy-row:last-child":{borderBottom:"0px"},paddingTop:"15px","& mark":{color:"#000000",fontWeight:500}},children:t.map(((e,t)=>{const r=e.Effect,o="Allow"===r;return(0,h.jsxs)(a.azJ,{className:"policy-row",sx:{display:"grid",gridTemplateColumns:"1fr",gap:"15px",fontSize:"14px",padding:"10px 0 10px 0","& .label":{fontWeight:600}},children:[(0,h.jsxs)(a.azJ,{sx:f,children:[(0,h.jsx)(a.azJ,{className:"label",children:"Effect:"}),(0,h.jsxs)(a.azJ,{sx:{display:"flex",alignItems:"center","& .min-icon":{marginRight:"5px",fill:o?x.Ez.GREEN:x.Ez.RED,height:"14px",width:"14px"}},children:[o?(0,h.jsx)(a.xhy,{}):(0,h.jsx)(a.aaC,{}),r]})]}),(0,h.jsxs)(a.xA9,{container:!0,sx:{gap:15},children:[(0,h.jsxs)(a.xA9,{item:!0,xs:12,sm:6,sx:f,children:[(0,h.jsx)(a.azJ,{className:"label",children:"Actions:"}),(0,h.jsx)(a.azJ,{children:e.Action&&e.Action.map(((e,r)=>(0,h.jsx)("div",{children:(0,h.jsx)(m,{search:n,children:e})},"".concat(t,"-r-").concat(r))))})]}),(0,h.jsxs)(a.xA9,{item:!0,xs:12,sm:6,sx:f,children:[(0,h.jsx)(a.azJ,{className:"label",children:"Resources:"}),(0,h.jsx)(a.azJ,{children:e.Resource&&e.Resource.map(((e,r)=>(0,h.jsxs)("div",{children:[" ",(0,h.jsx)(m,{search:n,children:e})]},"".concat(t,"-r-").concat(r))))})]})]})]},"".concat(t))}))})]})};var b=n(64159),g=n(46537),j=n(20554),v=n(6681),C=n(48793),w=n(56629),A=n(55968);const P=(0,p.A)(r.lazy((()=>n.e(4676).then(n.bind(n,4676))))),O=()=>{const e=(0,j.jL)(),t=(0,i.Zp)(),n=(0,i.g)(),p=(0,o.d4)(g.s$),[x,f]=(0,r.useState)(null),[m,O]=(0,r.useState)([]),[S,_]=(0,r.useState)([]),[E,R]=(0,r.useState)([]),[k,D]=(0,r.useState)(!1),M=n.policyName||"",[T,F]=(0,r.useState)(""),[z,I]=(0,r.useState)(!0),[N,U]=(0,r.useState)(""),[B,J]=(0,r.useState)(!0),[L,G]=(0,r.useState)(""),[$,H]=(0,r.useState)(!0),[W,Z]=(0,r.useState)(!1),[V,Y]=(0,r.useState)("summary"),K=p&&p.includes("ldap-idp")||!1,Q=(0,d._)(l.Ms,l.qA,!0),X=(0,d._)(l.Ms,l.Oh,!0),q=(0,d._)(l.Ms,l.x6,!0),ee=(0,d._)(l.Ms,l.Ld,!0),te=(0,d._)(l.Ms,l.yv,!0),ne=(0,d._)(l.Ms,l.uA,!0),re=(0,d._)(l.Ms,l.nr,!0);(0,r.useEffect)((()=>{z&&(z&&(te?w.F.policy.policyInfo(M).then((e=>{if(e.data){var t,n;f(e.data),F(e?JSON.stringify(JSON.parse(null===(t=e.data)||void 0===t?void 0:t.policy),null,4):"");const r=JSON.parse(null===(n=e.data)||void 0===n?void 0:n.policy);O(r.Statement)}I(!1)})).catch((t=>{e((0,b.C9)(t)),I(!1)})):I(!1)),B&&(q&&!K?w.F.policies.listUsersForPolicy(M).then((e=>{var t;_(null!==(t=e.data)&&void 0!==t?t:[]),J(!1)})).catch((t=>{e((0,b.C9)(t)),J(!1)})):J(!1)),$&&(Q&&!K?w.F.policies.listGroupsForPolicy(M).then((e=>{var t;R(null!==(t=e.data)&&void 0!==t?t:[]),H(!1)})).catch((t=>{e((0,b.C9)(t)),H(!1)})):H(!1)))}),[M,z,B,$,_,R,F,f,J,H,q,Q,te,K,e]);const oe=""!==M.trim(),ie=[{type:"view",onClick:e=>{t("".concat(l.zZ.USERS,"/").concat(encodeURIComponent(e)))},disableButtonFunction:()=>!ee}],ae=S.filter((e=>e.includes(N))),se=[{type:"view",onClick:e=>{t("".concat(l.zZ.GROUPS,"/").concat(encodeURIComponent(e)))},disableButtonFunction:()=>!X}],ce=E.filter((e=>e.includes(L))),le=()=>{J(!0),H(!0),I(!0)};return(0,r.useEffect)((()=>{e((0,b.ph)("policy_details_summary"))}),[]),(0,h.jsxs)(r.Fragment,{children:[W&&(0,h.jsx)(P,{deleteOpen:W,selectedPolicy:M,closeDeleteModalAndRefresh:e=>{Z(!1),t(l.zZ.POLICIES)}}),(0,h.jsx)(C.A,{label:(0,h.jsx)(r.Fragment,{children:(0,h.jsx)(a.EGL,{label:"Policy",onClick:()=>t(l.zZ.POLICIES)})}),actions:(0,h.jsx)(A.A,{})}),(0,h.jsxs)(a.Mxu,{children:[(0,h.jsx)(a.lcx,{icon:(0,h.jsx)(a.n$X,{width:40}),title:M,subTitle:(0,h.jsx)(r.Fragment,{children:"IAM Policy"}),actions:(0,h.jsxs)(r.Fragment,{children:[(0,h.jsx)(d.R,{scopes:[l.OV.ADMIN_DELETE_POLICY],resource:l.Ms,errorProps:{disabled:!0},children:(0,h.jsx)(v.A,{tooltip:ne?"":(0,l.vj)(l.uA,"delete Policies"),children:(0,h.jsx)(a.$nd,{id:"delete-policy",label:"Delete Policy",variant:"secondary",icon:(0,h.jsx)(a.ucK,{}),onClick:()=>{Z(!0)},disabled:!ne})})}),(0,h.jsx)(v.A,{tooltip:"Refresh",children:(0,h.jsx)(a.$nd,{id:"refresh-policy",label:"Refresh",variant:"regular",icon:(0,h.jsx)(a.fNY,{}),onClick:()=>{le()}})})]}),sx:{marginBottom:15}}),(0,h.jsx)(a.azJ,{children:(0,h.jsx)(a.tUM,{options:[{tabConfig:{label:"Summary",disabled:!te,id:"summary"},content:(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(a.xA9,{onMouseMove:()=>e((0,b.ph)("policy_details_summary")),children:[(0,h.jsx)(a._xt,{separator:!0,sx:{marginBottom:15},children:"Policy Summary"}),(0,h.jsx)(a.azJ,{withBorders:!0,children:(0,h.jsx)(y,{policyStatements:m})})]})})},{tabConfig:{label:"Users",disabled:!q||K,id:"users"},content:(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(a.xA9,{onMouseMove:()=>e((0,b.ph)("policy_details_users")),children:[(0,h.jsx)(a._xt,{separator:!0,sx:{marginBottom:15},children:"Users"}),(0,h.jsxs)(a.xA9,{container:!0,children:[S.length>0&&(0,h.jsx)(a.xA9,{item:!0,xs:12,sx:{...s._0.actionsTray,marginBottom:15},children:(0,h.jsx)(u.A,{value:N,placeholder:"Search Users",id:"search-resource",onChange:e=>{U(e)}})}),(0,h.jsx)(a.bQt,{itemActions:ie,columns:[{label:"Name",elementKey:"name"}],isLoading:B,records:ae,entityName:"Users with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Groups",disabled:!Q||K,id:"groups"},content:(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(a.xA9,{onMouseMove:()=>e((0,b.ph)("policy_details_groups")),children:[(0,h.jsx)(a._xt,{separator:!0,sx:{marginBottom:15},children:"Groups"}),(0,h.jsxs)(a.xA9,{container:!0,children:[E.length>0&&(0,h.jsx)(a.xA9,{item:!0,xs:12,sx:{...s._0.actionsTray,marginBottom:15},children:(0,h.jsx)(u.A,{value:N,placeholder:"Search Groups",id:"search-resource",onChange:e=>{G(e)}})}),(0,h.jsx)(a.bQt,{itemActions:se,columns:[{label:"Name",elementKey:"name"}],isLoading:$,records:ce,entityName:"Groups with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Raw Policy",disabled:!te,id:"raw-policy"},content:(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(a.xA9,{onMouseMove:()=>e((0,b.ph)("policy_details_policy")),children:[(0,h.jsx)(a.V7x,{content:(0,h.jsx)(r.Fragment,{children:(0,h.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})}),placement:"right",children:(0,h.jsx)(a._xt,{children:"Raw Policy"})}),(0,h.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),k||(D(!0),re?w.F.policies.addPolicy({name:M,policy:T}).then((t=>{D(!1),e((0,b.Hk)("Policy successfully updated")),le()})).catch((t=>{D(!1),e((0,b.C9)({errorMessage:"There was an error updating the Policy ",detailedError:"There was an error updating the Policy: "+(t.error.detailedMessage||"")+". Please check Policy syntax."}))})):D(!1))},children:(0,h.jsxs)(a.xA9,{container:!0,children:[(0,h.jsx)(a.xA9,{item:!0,xs:12,children:(0,h.jsx)(c.A,{value:T,onChange:e=>{re&&F(e)},editorHeight:"350px",helptip:(0,h.jsx)(r.Fragment,{children:(0,h.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})})})}),(0,h.jsxs)(a.xA9,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end",paddingTop:16,gap:8},children:[!x&&(0,h.jsx)(a.$nd,{type:"button",variant:"regular",id:"clear-policy",onClick:()=>{F("{}")},children:"Clear"}),(0,h.jsx)(d.R,{scopes:[l.OV.ADMIN_CREATE_POLICY],resource:l.Ms,errorProps:{disabled:!0},children:(0,h.jsx)(v.A,{tooltip:re?"":(0,l.vj)(l.nr,"edit a Policy"),children:(0,h.jsx)(a.$nd,{id:"save",type:"submit",variant:"callAction",color:"primary",disabled:k||!oe||!re,label:"Save"})})})]}),k&&(0,h.jsx)(a.xA9,{item:!0,xs:12,children:(0,h.jsx)(a.z21,{})})]})})]})})}],currentTabOrPath:V,onTabClick:e=>Y(e)})})]})]})}},75270:(e,t,n)=>{"use strict";var r=n(40139),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,a,s,c,l,d=!1;t||(t={}),n=t.debug||!1;try{if(a=r(),s=document.createRange(),c=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(l),s.selectNodeContents(l),c.addRange(s),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");d=!0}catch(p){n&&console.error("unable to copy using execCommand: ",p),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(p){n&&console.error("unable to copy using clipboardData: ",p),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(s):c.removeAllRanges()),l&&document.body.removeChild(l),a()}return d}},24480:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=s(n(65043)),i=s(n(75270)),a=["text","onCopy","options","children"];function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function p(e,t){for(var n=0;n{"use strict";var r=n(24480).CopyToClipboard;r.CopyToClipboard=r,e.exports=r},40139:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r.\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n helptip?: any;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n helptip,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n helpTip={helptip}\n helpTipPlacement=\"right\"\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#FFBD62\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number,\n) => {\n if (activeDisks <= totalDrives / 2) {\n return \"bad\";\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return \"warn\";\n }\n if (activeDisks === totalDrives) {\n return \"good\";\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return \"bad\";\n case \"online\":\n return \"good\";\n default:\n return \"warn\";\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number,\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return \"bad\";\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return \"warn\";\n }\n if (activeNetwork === networkTotal) {\n return \"good\";\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DisabledIcon, EnabledIcon, Box, Grid, HelpTip } from \"mds\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { STATUS_COLORS } from \"../Dashboard/BasicDashboard/Utils\";\nimport { IAMStatement } from \"./types\";\n\nconst rowGridStyle = {\n display: \"grid\",\n gridTemplateColumns: \"70px 1fr\",\n gap: 15,\n};\n\nconst escapeRegExp = (str = \"\") =>\n str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n\nconst Highlight = ({ search = \"\", children = \"\" }): any => {\n const txtParts = new RegExp(`(${escapeRegExp(search)})`, \"i\");\n const parts = String(children).split(txtParts);\n\n if (search) {\n return parts.map((part, index) =>\n txtParts.test(part) ? {part} : part,\n );\n } else {\n return children;\n }\n};\n\nconst PolicyView = ({\n policyStatements,\n}: {\n policyStatements: IAMStatement[];\n}) => {\n const [filter, setFilter] = useState(\"\");\n\n return (\n \n \n \n \n Define which actions are permitted on a specified resource.\n Learn more about{\" \"}\n \n IAM conditional statements\n \n .\n \n }\n placement=\"right\"\n >\n \n Statements\n \n \n \n \n \n \n \n {!policyStatements && Policy has no statements}\n {policyStatements && (\n \n {policyStatements.map((stmt, i) => {\n const effect = stmt.Effect;\n const isAllow = effect === \"Allow\";\n return (\n \n \n Effect:\n \n {isAllow ? : }\n {effect}\n \n \n \n \n Actions:\n \n {stmt.Action &&\n stmt.Action.map((act, actIndex) => (\n
\n {act}\n
\n ))}\n
\n
\n \n Resources:\n \n {stmt.Resource &&\n stmt.Resource.map((res, resIndex) => (\n
\n {\" \"}\n {res}\n
\n ))}\n
\n
\n
\n \n );\n })}\n \n )}\n \n );\n};\n\nexport default PolicyView;\n","// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { IAMPolicy, IAMStatement } from \"./types\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n IAMPoliciesIcon,\n PageLayout,\n ProgressBar,\n RefreshIcon,\n ScreenTitle,\n SectionTitle,\n Tabs,\n TrashIcon,\n HelpTip,\n} from \"mds\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\n\nimport {\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n deletePolicyPermissions,\n getGroupPermissions,\n IAM_PAGES,\n IAM_SCOPES,\n listGroupPermissions,\n listUsersPermissions,\n permissionTooltipHelper,\n viewPolicyPermissions,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport PolicyView from \"./PolicyView\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { selFeatures } from \"../consoleSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { Policy } from \"../../../api/consoleApi\";\nimport { api } from \"../../../api\";\nimport HelpMenu from \"../HelpMenu\";\nimport SearchBox from \"../Common/SearchBox\";\n\nconst DeletePolicy = withSuspense(React.lazy(() => import(\"./DeletePolicy\")));\n\nconst PolicyDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const features = useSelector(selFeatures);\n\n const [policy, setPolicy] = useState(null);\n const [policyStatements, setPolicyStatements] = useState([]);\n const [userList, setUserList] = useState([]);\n const [groupList, setGroupList] = useState([]);\n const [addLoading, setAddLoading] = useState(false);\n\n const policyName = params.policyName || \"\";\n\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n const [loadingPolicy, setLoadingPolicy] = useState(true);\n const [filterUsers, setFilterUsers] = useState(\"\");\n const [loadingUsers, setLoadingUsers] = useState(true);\n const [filterGroups, setFilterGroups] = useState(\"\");\n const [loadingGroups, setLoadingGroups] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedTab, setSelectedTab] = useState(\"summary\");\n\n const ldapIsEnabled = (features && features.includes(\"ldap-idp\")) || false;\n\n const displayGroups = hasPermission(\n CONSOLE_UI_RESOURCE,\n listGroupPermissions,\n true,\n );\n\n const viewGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n getGroupPermissions,\n true,\n );\n\n const displayUsers = hasPermission(\n CONSOLE_UI_RESOURCE,\n listUsersPermissions,\n true,\n );\n\n const viewUser = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewUserPermissions,\n true,\n );\n\n const displayPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n true,\n );\n\n const canDeletePolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n deletePolicyPermissions,\n true,\n );\n\n const canEditPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n true,\n );\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n if (canEditPolicy) {\n api.policies\n .addPolicy({\n name: policyName,\n policy: policyDefinition,\n })\n .then((_) => {\n setAddLoading(false);\n dispatch(setSnackBarMessage(\"Policy successfully updated\"));\n refreshPolicyDetails();\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"There was an error updating the Policy \",\n detailedError:\n \"There was an error updating the Policy: \" +\n (err.error.detailedMessage || \"\") +\n \". Please check Policy syntax.\",\n }),\n );\n });\n } else {\n setAddLoading(false);\n }\n };\n\n useEffect(() => {\n const loadUsersForPolicy = () => {\n if (loadingUsers) {\n if (displayUsers && !ldapIsEnabled) {\n api.policies\n .listUsersForPolicy(policyName)\n .then((result) => {\n setUserList(result.data ?? []);\n setLoadingUsers(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingUsers(false);\n });\n } else {\n setLoadingUsers(false);\n }\n }\n };\n\n const loadGroupsForPolicy = () => {\n if (loadingGroups) {\n if (displayGroups && !ldapIsEnabled) {\n api.policies\n .listGroupsForPolicy(policyName)\n .then((result) => {\n setGroupList(result.data ?? []);\n setLoadingGroups(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingGroups(false);\n });\n } else {\n setLoadingGroups(false);\n }\n }\n };\n const loadPolicyDetails = () => {\n if (loadingPolicy) {\n if (displayPolicy) {\n api.policy\n .policyInfo(policyName)\n .then((result) => {\n if (result.data) {\n setPolicy(result.data);\n setPolicyDefinition(\n result\n ? JSON.stringify(JSON.parse(result.data?.policy!), null, 4)\n : \"\",\n );\n const pol: IAMPolicy = JSON.parse(result.data?.policy!);\n setPolicyStatements(pol.Statement);\n }\n setLoadingPolicy(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingPolicy(false);\n });\n } else {\n setLoadingPolicy(false);\n }\n }\n };\n\n if (loadingPolicy) {\n loadPolicyDetails();\n loadUsersForPolicy();\n loadGroupsForPolicy();\n }\n }, [\n policyName,\n loadingPolicy,\n loadingUsers,\n loadingGroups,\n setUserList,\n setGroupList,\n setPolicyDefinition,\n setPolicy,\n setLoadingUsers,\n setLoadingGroups,\n displayUsers,\n displayGroups,\n displayPolicy,\n ldapIsEnabled,\n dispatch,\n ]);\n\n const resetForm = () => {\n setPolicyDefinition(\"{}\");\n };\n\n const validSave = policyName.trim() !== \"\";\n\n const deletePolicy = () => {\n setDeleteOpen(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n navigate(IAM_PAGES.POLICIES);\n };\n\n const userViewAction = (user: any) => {\n navigate(`${IAM_PAGES.USERS}/${encodeURIComponent(user)}`);\n };\n const userTableActions = [\n {\n type: \"view\",\n onClick: userViewAction,\n disableButtonFunction: () => !viewUser,\n },\n ];\n\n const filteredUsers = userList.filter((elementItem) =>\n elementItem.includes(filterUsers),\n );\n\n const groupViewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURIComponent(group)}`);\n };\n\n const groupTableActions = [\n {\n type: \"view\",\n onClick: groupViewAction,\n disableButtonFunction: () => !viewGroup,\n },\n ];\n\n const filteredGroups = groupList.filter((elementItem) =>\n elementItem.includes(filterGroups),\n );\n\n const refreshPolicyDetails = () => {\n setLoadingUsers(true);\n setLoadingGroups(true);\n setLoadingPolicy(true);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"policy_details_summary\"));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n \n )}\n \n navigate(IAM_PAGES.POLICIES)}\n />\n \n }\n actions={}\n />\n \n }\n title={policyName}\n subTitle={IAM Policy}\n actions={\n \n \n \n }\n onClick={deletePolicy}\n disabled={!canDeletePolicy}\n />\n \n \n\n \n }\n onClick={() => {\n refreshPolicyDetails();\n }}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n \n \n dispatch(setHelpName(\"policy_details_summary\"))\n }\n >\n \n Policy Summary\n \n \n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Users\",\n disabled: !displayUsers || ldapIsEnabled,\n id: \"users\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_users\"))\n }\n >\n \n Users\n \n \n {userList.length > 0 && (\n \n {\n setFilterUsers(val);\n }}\n />\n \n )}\n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Groups\",\n disabled: !displayGroups || ldapIsEnabled,\n id: \"groups\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_groups\"))\n }\n >\n \n Groups\n \n \n {groupList.length > 0 && (\n \n {\n setFilterGroups(val);\n }}\n />\n \n )}\n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Raw Policy\",\n disabled: !displayPolicy,\n id: \"raw-policy\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_policy\"))\n }\n >\n \n \n Guide to access policy structure\n \n \n }\n placement=\"right\"\n >\n Raw Policy\n \n ) => {\n saveRecord(e);\n }}\n >\n \n \n {\n if (canEditPolicy) {\n setPolicyDefinition(value);\n }\n }}\n editorHeight={\"350px\"}\n helptip={\n \n \n Guide to access policy structure\n \n \n }\n />\n \n \n {!policy && (\n {\n resetForm();\n }}\n >\n Clear\n \n )}\n \n \n \n \n \n \n {addLoading && (\n \n \n \n )}\n \n \n \n \n ),\n },\n ]}\n currentTabOrPath={selectedTab}\n onTabClick={(tab) => setSelectedTab(tab)}\n />\n \n \n \n );\n};\n\nexport default PolicyDetails;\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["_ref","value","label","tooltip","mode","onChange","editorHeight","helptip","_jsx","CodeEditor","helpTools","Fragment","children","TooltipWrapper","CopyToClipboard","text","Button","type","id","icon","CopyIcon","color","variant","helpTip","helpTipPlacement","STATUS_COLORS","RED","GREEN","YELLOW","getDriveStatusColor","activeDisks","totalDrives","serverStatusColor","health_status","getNetworkStatusColor","activeNetwork","networkTotal","rowGridStyle","display","gridTemplateColumns","gap","Highlight","search","txtParts","RegExp","concat","arguments","length","undefined","replace","escapeRegExp","parts","String","split","map","part","index","test","_ref2","policyStatements","filter","setFilter","useState","_jsxs","Grid","container","item","xs","sx","alignItems","HelpTip","content","target","href","placement","sm","fontWeight","justifyContent","SearchBox","placeholder","maxWidth","borderBottom","borderTop","paddingTop","stmt","i","effect","Effect","isAllow","Box","className","fontSize","padding","marginRight","fill","height","width","EnabledIcon","DisabledIcon","Action","act","actIndex","Resource","res","resIndex","DeletePolicy","withSuspense","React","PolicyDetails","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","features","useSelector","selFeatures","policy","setPolicy","setPolicyStatements","userList","setUserList","groupList","setGroupList","addLoading","setAddLoading","policyName","policyDefinition","setPolicyDefinition","loadingPolicy","setLoadingPolicy","filterUsers","setFilterUsers","loadingUsers","setLoadingUsers","filterGroups","setFilterGroups","loadingGroups","setLoadingGroups","deleteOpen","setDeleteOpen","selectedTab","setSelectedTab","ldapIsEnabled","includes","displayGroups","hasPermission","CONSOLE_UI_RESOURCE","listGroupPermissions","viewGroup","getGroupPermissions","displayUsers","listUsersPermissions","viewUser","viewUserPermissions","displayPolicy","viewPolicyPermissions","canDeletePolicy","deletePolicyPermissions","canEditPolicy","createPolicyPermissions","useEffect","api","policyInfo","then","result","data","_result$data3","_result$data4","JSON","stringify","parse","pol","Statement","catch","err","setErrorSnackMessage","policies","listUsersForPolicy","_result$data","listGroupsForPolicy","_result$data2","validSave","trim","userTableActions","onClick","user","IAM_PAGES","USERS","encodeURIComponent","disableButtonFunction","filteredUsers","elementItem","groupTableActions","group","GROUPS","filteredGroups","refreshPolicyDetails","setHelpName","selectedPolicy","closeDeleteModalAndRefresh","refresh","POLICIES","PageHeaderWrapper","BackLink","actions","HelpMenu","PageLayout","ScreenTitle","IAMPoliciesIcon","title","subTitle","SecureComponent","scopes","IAM_SCOPES","ADMIN_DELETE_POLICY","resource","errorProps","disabled","permissionTooltipHelper","TrashIcon","deletePolicy","RefreshIcon","marginBottom","Tabs","options","tabConfig","onMouseMove","SectionTitle","separator","withBorders","PolicyView","actionsTray","val","DataTable","itemActions","columns","elementKey","isLoading","records","entityName","idField","customPaperHeight","noValidate","autoComplete","onSubmit","e","preventDefault","addPolicy","name","_","setSnackBarMessage","errorMessage","detailedError","error","detailedMessage","CodeMirrorWrapper","ADMIN_CREATE_POLICY","ProgressBar","currentTabOrPath","onTabClick","tab","deselectCurrent","require","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","navigator","userAgent","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/1370.adfc1682.chunk.js b/web-app/build/static/js/1370.adfc1682.chunk.js deleted file mode 100644 index 1b0f22527..000000000 --- a/web-app/build/static/js/1370.adfc1682.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[1370],{41206:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var r=n(65043),o=n(89923),i=n(61476),a=n.n(i),s=n(6681),c=n(70579);const l=e=>{let{value:t,label:n="",tooltip:i="",mode:l="json",onChange:d,editorHeight:p=250,helptip:u}=e;return(0,c.jsx)(o.BYM,{value:t,onChange:e=>d(e),mode:l,tooltip:i,editorHeight:p,label:n,helpTools:(0,c.jsx)(r.Fragment,{children:(0,c.jsx)(s.A,{tooltip:"Copy to Clipboard",children:(0,c.jsx)(a(),{text:t,children:(0,c.jsx)(o.$nd,{type:"button",id:"copy-code-mirror",icon:(0,c.jsx)(o.TdU,{}),color:"primary",variant:"regular"})})})}),helpTip:u,helpTipPlacement:"right"})}},71435:(e,t,n)=>{"use strict";n.d(t,{CS:()=>a,Ez:()=>r,WJ:()=>o,Zb:()=>i});const r={RED:"#C83B51",GREEN:"#4CCB92",YELLOW:"#FFBD62"},o=(e,t)=>e<=t/2?"bad":2!==t&&e===t/2+1?"warn":e===t?"good":void 0,i=e=>{switch(e){case"offline":return"bad";case"online":return"good";default:return"warn"}},a=(e,t)=>e<=t/2?"bad":e===t/2+1?"warn":e===t?"good":void 0},81370:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>S});var r=n(65043),o=n(22166),i=n(73216),a=n(89923),s=n(77403),c=n(41206),l=n(99161),d=n(77938),p=n(72237),u=n(64681),x=n(71435),h=n(70579);const f={display:"grid",gridTemplateColumns:"70px 1fr",gap:15},y=e=>{let{search:t="",children:n=""}=e;const r=new RegExp("(".concat(function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}(t),")"),"i"),o=String(n).split(r);return t?o.map(((e,t)=>r.test(e)?(0,h.jsx)("mark",{children:e},t):e)):n},m=e=>{let{policyStatements:t}=e;const[n,o]=(0,r.useState)("");return(0,h.jsxs)(a.xA9,{container:!0,children:[(0,h.jsx)(a.xA9,{item:!0,xs:12,children:(0,h.jsxs)(a.xA9,{container:!0,sx:{display:"flex",alignItems:"center"},children:[(0,h.jsx)(a.V7x,{content:(0,h.jsxs)(r.Fragment,{children:["Define which actions are permitted on a specified resource. Learn more about"," ",(0,h.jsx)("a",{target:"blank",href:"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html",children:"IAM conditional statements"}),"."]}),placement:"right",children:(0,h.jsx)(a.xA9,{item:!0,xs:12,sm:6,sx:{fontWeight:"bold"},children:"Statements"})}),(0,h.jsx)(a.xA9,{item:!0,xs:12,sm:6,sx:{display:"flex",justifyContent:"flex-end"},children:(0,h.jsx)(u.A,{placeholder:"Search",onChange:o,value:n,sx:{maxWidth:380}})})]})}),!t&&(0,h.jsx)(r.Fragment,{children:"Policy has no statements"}),t&&(0,h.jsx)(a.xA9,{item:!0,xs:12,sx:{"& .policy-row":{borderBottom:"1px solid #eaeaea"},"& .policy-row:first-child":{borderTop:"1px solid #eaeaea"},"& .policy-row:last-child":{borderBottom:"0px"},paddingTop:"15px","& mark":{color:"#000000",fontWeight:500}},children:t.map(((e,t)=>{const r=e.Effect,o="Allow"===r;return(0,h.jsxs)(a.azJ,{className:"policy-row",sx:{display:"grid",gridTemplateColumns:"1fr",gap:"15px",fontSize:"14px",padding:"10px 0 10px 0","& .label":{fontWeight:600}},children:[(0,h.jsxs)(a.azJ,{sx:f,children:[(0,h.jsx)(a.azJ,{className:"label",children:"Effect:"}),(0,h.jsxs)(a.azJ,{sx:{display:"flex",alignItems:"center","& .min-icon":{marginRight:"5px",fill:o?x.Ez.GREEN:x.Ez.RED,height:"14px",width:"14px"}},children:[o?(0,h.jsx)(a.xhy,{}):(0,h.jsx)(a.aaC,{}),r]})]}),(0,h.jsxs)(a.xA9,{container:!0,sx:{gap:15},children:[(0,h.jsxs)(a.xA9,{item:!0,xs:12,sm:6,sx:f,children:[(0,h.jsx)(a.azJ,{className:"label",children:"Actions:"}),(0,h.jsx)(a.azJ,{children:e.Action&&e.Action.map(((e,r)=>(0,h.jsx)("div",{children:(0,h.jsx)(y,{search:n,children:e})},"".concat(t,"-r-").concat(r))))})]}),(0,h.jsxs)(a.xA9,{item:!0,xs:12,sm:6,sx:f,children:[(0,h.jsx)(a.azJ,{className:"label",children:"Resources:"}),(0,h.jsx)(a.azJ,{children:e.Resource&&e.Resource.map(((e,r)=>(0,h.jsxs)("div",{children:[" ",(0,h.jsx)(y,{search:n,children:e})]},"".concat(t,"-r-").concat(r))))})]})]})]},"".concat(t))}))})]})};var b=n(56483),g=n(64159),j=n(46537),v=n(20554),C=n(6681),w=n(48793),A=n(56629),P=n(55968);const O=(0,p.A)(r.lazy((()=>n.e(4676).then(n.bind(n,4676))))),S=()=>{const e=(0,v.jL)(),t=(0,i.Zp)(),n=(0,i.g)(),p=(0,o.d4)(j.s$),[x,f]=(0,r.useState)(null),[y,S]=(0,r.useState)([]),[_,E]=(0,r.useState)([]),[R,k]=(0,r.useState)([]),[D,M]=(0,r.useState)(!1),T=(0,b.x6)(n.policyName||""),[F,z]=(0,r.useState)(""),[N,I]=(0,r.useState)(!0),[B,U]=(0,r.useState)(""),[J,L]=(0,r.useState)(!0),[G,$]=(0,r.useState)(""),[H,W]=(0,r.useState)(!0),[Z,V]=(0,r.useState)(!1),[Y,K]=(0,r.useState)("summary"),Q=p&&p.includes("ldap-idp")||!1,X=(0,d._)(l.Ms,l.qA,!0),q=(0,d._)(l.Ms,l.Oh,!0),ee=(0,d._)(l.Ms,l.x6,!0),te=(0,d._)(l.Ms,l.Ld,!0),ne=(0,d._)(l.Ms,l.yv,!0),re=(0,d._)(l.Ms,l.uA,!0),oe=(0,d._)(l.Ms,l.nr,!0);(0,r.useEffect)((()=>{N&&(N&&(ne?A.F.policy.policyInfo((0,b.nf)(T)).then((e=>{if(e.data){var t,n;f(e.data),z(e?JSON.stringify(JSON.parse(null===(t=e.data)||void 0===t?void 0:t.policy),null,4):"");const r=JSON.parse(null===(n=e.data)||void 0===n?void 0:n.policy);S(r.Statement)}I(!1)})).catch((t=>{e((0,g.C9)(t)),I(!1)})):I(!1)),J&&(ee&&!Q?A.F.policies.listUsersForPolicy((0,b.nf)(T)).then((e=>{var t;E(null!==(t=e.data)&&void 0!==t?t:[]),L(!1)})).catch((t=>{e((0,g.C9)(t)),L(!1)})):L(!1)),H&&(X&&!Q?A.F.policies.listGroupsForPolicy((0,b.nf)(T)).then((e=>{var t;k(null!==(t=e.data)&&void 0!==t?t:[]),W(!1)})).catch((t=>{e((0,g.C9)(t)),W(!1)})):W(!1)))}),[T,N,J,H,E,k,z,f,L,W,ee,X,ne,Q,e]);const ie=""!==T.trim(),ae=[{type:"view",onClick:e=>{t("".concat(l.zZ.USERS,"/").concat((0,b.nf)(e)))},disableButtonFunction:()=>!te}],se=_.filter((e=>e.includes(B))),ce=[{type:"view",onClick:e=>{t("".concat(l.zZ.GROUPS,"/").concat((0,b.nf)(e)))},disableButtonFunction:()=>!q}],le=R.filter((e=>e.includes(G))),de=()=>{L(!0),W(!0),I(!0)};return(0,r.useEffect)((()=>{e((0,g.ph)("policy_details_summary"))}),[]),(0,h.jsxs)(r.Fragment,{children:[Z&&(0,h.jsx)(O,{deleteOpen:Z,selectedPolicy:T,closeDeleteModalAndRefresh:e=>{V(!1),t(l.zZ.POLICIES)}}),(0,h.jsx)(w.A,{label:(0,h.jsx)(r.Fragment,{children:(0,h.jsx)(a.EGL,{label:"Policy",onClick:()=>t(l.zZ.POLICIES)})}),actions:(0,h.jsx)(P.A,{})}),(0,h.jsxs)(a.Mxu,{children:[(0,h.jsx)(a.lcx,{icon:(0,h.jsx)(a.n$X,{width:40}),title:T,subTitle:(0,h.jsx)(r.Fragment,{children:"IAM Policy"}),actions:(0,h.jsxs)(r.Fragment,{children:[(0,h.jsx)(d.R,{scopes:[l.OV.ADMIN_DELETE_POLICY],resource:l.Ms,errorProps:{disabled:!0},children:(0,h.jsx)(C.A,{tooltip:re?"":(0,l.vj)(l.uA,"delete Policies"),children:(0,h.jsx)(a.$nd,{id:"delete-policy",label:"Delete Policy",variant:"secondary",icon:(0,h.jsx)(a.ucK,{}),onClick:()=>{V(!0)},disabled:!re})})}),(0,h.jsx)(C.A,{tooltip:"Refresh",children:(0,h.jsx)(a.$nd,{id:"refresh-policy",label:"Refresh",variant:"regular",icon:(0,h.jsx)(a.fNY,{}),onClick:()=>{de()}})})]}),sx:{marginBottom:15}}),(0,h.jsx)(a.azJ,{children:(0,h.jsx)(a.tUM,{options:[{tabConfig:{label:"Summary",disabled:!ne,id:"summary"},content:(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(a.xA9,{onMouseMove:()=>e((0,g.ph)("policy_details_summary")),children:[(0,h.jsx)(a._xt,{separator:!0,sx:{marginBottom:15},children:"Policy Summary"}),(0,h.jsx)(a.azJ,{withBorders:!0,children:(0,h.jsx)(m,{policyStatements:y})})]})})},{tabConfig:{label:"Users",disabled:!ee||Q,id:"users"},content:(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(a.xA9,{onMouseMove:()=>e((0,g.ph)("policy_details_users")),children:[(0,h.jsx)(a._xt,{separator:!0,sx:{marginBottom:15},children:"Users"}),(0,h.jsxs)(a.xA9,{container:!0,children:[_.length>0&&(0,h.jsx)(a.xA9,{item:!0,xs:12,sx:{...s._0.actionsTray,marginBottom:15},children:(0,h.jsx)(u.A,{value:B,placeholder:"Search Users",id:"search-resource",onChange:e=>{U(e)}})}),(0,h.jsx)(a.bQt,{itemActions:ae,columns:[{label:"Name",elementKey:"name"}],isLoading:J,records:se,entityName:"Users with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Groups",disabled:!X||Q,id:"groups"},content:(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(a.xA9,{onMouseMove:()=>e((0,g.ph)("policy_details_groups")),children:[(0,h.jsx)(a._xt,{separator:!0,sx:{marginBottom:15},children:"Groups"}),(0,h.jsxs)(a.xA9,{container:!0,children:[R.length>0&&(0,h.jsx)(a.xA9,{item:!0,xs:12,sx:{...s._0.actionsTray,marginBottom:15},children:(0,h.jsx)(u.A,{value:B,placeholder:"Search Groups",id:"search-resource",onChange:e=>{$(e)}})}),(0,h.jsx)(a.bQt,{itemActions:ce,columns:[{label:"Name",elementKey:"name"}],isLoading:H,records:le,entityName:"Groups with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Raw Policy",disabled:!ne,id:"raw-policy"},content:(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(a.xA9,{onMouseMove:()=>e((0,g.ph)("policy_details_policy")),children:[(0,h.jsx)(a.V7x,{content:(0,h.jsx)(r.Fragment,{children:(0,h.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})}),placement:"right",children:(0,h.jsx)(a._xt,{children:"Raw Policy"})}),(0,h.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),D||(M(!0),oe?A.F.policies.addPolicy({name:T,policy:F}).then((t=>{M(!1),e((0,g.Hk)("Policy successfully updated")),de()})).catch((t=>{M(!1),e((0,g.C9)({errorMessage:"There was an error updating the Policy ",detailedError:"There was an error updating the Policy: "+(t.error.detailedMessage||"")+". Please check Policy syntax."}))})):M(!1))},children:(0,h.jsxs)(a.xA9,{container:!0,children:[(0,h.jsx)(a.xA9,{item:!0,xs:12,children:(0,h.jsx)(c.A,{value:F,onChange:e=>{oe&&z(e)},editorHeight:"350px",helptip:(0,h.jsx)(r.Fragment,{children:(0,h.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})})})}),(0,h.jsxs)(a.xA9,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end",paddingTop:16,gap:8},children:[!x&&(0,h.jsx)(a.$nd,{type:"button",variant:"regular",id:"clear-policy",onClick:()=>{z("{}")},children:"Clear"}),(0,h.jsx)(d.R,{scopes:[l.OV.ADMIN_CREATE_POLICY],resource:l.Ms,errorProps:{disabled:!0},children:(0,h.jsx)(C.A,{tooltip:oe?"":(0,l.vj)(l.nr,"edit a Policy"),children:(0,h.jsx)(a.$nd,{id:"save",type:"submit",variant:"callAction",color:"primary",disabled:D||!ie||!oe,label:"Save"})})})]}),D&&(0,h.jsx)(a.xA9,{item:!0,xs:12,children:(0,h.jsx)(a.z21,{})})]})})]})})}],currentTabOrPath:Y,onTabClick:e=>K(e)})})]})]})}},75270:(e,t,n)=>{"use strict";var r=n(40139),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,a,s,c,l,d=!1;t||(t={}),n=t.debug||!1;try{if(a=r(),s=document.createRange(),c=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(l),s.selectNodeContents(l),c.addRange(s),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");d=!0}catch(p){n&&console.error("unable to copy using execCommand: ",p),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(p){n&&console.error("unable to copy using clipboardData: ",p),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(s):c.removeAllRanges()),l&&document.body.removeChild(l),a()}return d}},24480:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=s(n(65043)),i=s(n(75270)),a=["text","onCopy","options","children"];function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function p(e,t){for(var n=0;n{"use strict";var r=n(24480).CopyToClipboard;r.CopyToClipboard=r,e.exports=r},40139:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r.\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n helptip?: any;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n helptip,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n helpTip={helptip}\n helpTipPlacement=\"right\"\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#FFBD62\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number,\n) => {\n if (activeDisks <= totalDrives / 2) {\n return \"bad\";\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return \"warn\";\n }\n if (activeDisks === totalDrives) {\n return \"good\";\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return \"bad\";\n case \"online\":\n return \"good\";\n default:\n return \"warn\";\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number,\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return \"bad\";\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return \"warn\";\n }\n if (activeNetwork === networkTotal) {\n return \"good\";\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DisabledIcon, EnabledIcon, Box, Grid, HelpTip } from \"mds\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { STATUS_COLORS } from \"../Dashboard/BasicDashboard/Utils\";\nimport { IAMStatement } from \"./types\";\n\nconst rowGridStyle = {\n display: \"grid\",\n gridTemplateColumns: \"70px 1fr\",\n gap: 15,\n};\n\nconst escapeRegExp = (str = \"\") =>\n str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n\nconst Highlight = ({ search = \"\", children = \"\" }): any => {\n const txtParts = new RegExp(`(${escapeRegExp(search)})`, \"i\");\n const parts = String(children).split(txtParts);\n\n if (search) {\n return parts.map((part, index) =>\n txtParts.test(part) ? {part} : part,\n );\n } else {\n return children;\n }\n};\n\nconst PolicyView = ({\n policyStatements,\n}: {\n policyStatements: IAMStatement[];\n}) => {\n const [filter, setFilter] = useState(\"\");\n\n return (\n \n \n \n \n Define which actions are permitted on a specified resource.\n Learn more about{\" \"}\n \n IAM conditional statements\n \n .\n \n }\n placement=\"right\"\n >\n \n Statements\n \n \n \n \n \n \n \n {!policyStatements && Policy has no statements}\n {policyStatements && (\n \n {policyStatements.map((stmt, i) => {\n const effect = stmt.Effect;\n const isAllow = effect === \"Allow\";\n return (\n \n \n Effect:\n \n {isAllow ? : }\n {effect}\n \n \n \n \n Actions:\n \n {stmt.Action &&\n stmt.Action.map((act, actIndex) => (\n
\n {act}\n
\n ))}\n
\n
\n \n Resources:\n \n {stmt.Resource &&\n stmt.Resource.map((res, resIndex) => (\n
\n {\" \"}\n {res}\n
\n ))}\n
\n
\n
\n \n );\n })}\n \n )}\n \n );\n};\n\nexport default PolicyView;\n","// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { IAMPolicy, IAMStatement } from \"./types\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n IAMPoliciesIcon,\n PageLayout,\n ProgressBar,\n RefreshIcon,\n ScreenTitle,\n SectionTitle,\n Tabs,\n TrashIcon,\n HelpTip,\n} from \"mds\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\n\nimport {\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n deletePolicyPermissions,\n getGroupPermissions,\n IAM_PAGES,\n IAM_SCOPES,\n listGroupPermissions,\n listUsersPermissions,\n permissionTooltipHelper,\n viewPolicyPermissions,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport PolicyView from \"./PolicyView\";\nimport { decodeURLString, encodeURLString } from \"../../../common/utils\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { selFeatures } from \"../consoleSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { Policy } from \"../../../api/consoleApi\";\nimport { api } from \"../../../api\";\nimport HelpMenu from \"../HelpMenu\";\nimport SearchBox from \"../Common/SearchBox\";\n\nconst DeletePolicy = withSuspense(React.lazy(() => import(\"./DeletePolicy\")));\n\nconst PolicyDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const features = useSelector(selFeatures);\n\n const [policy, setPolicy] = useState(null);\n const [policyStatements, setPolicyStatements] = useState([]);\n const [userList, setUserList] = useState([]);\n const [groupList, setGroupList] = useState([]);\n const [addLoading, setAddLoading] = useState(false);\n\n const policyName = decodeURLString(params.policyName || \"\");\n\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n const [loadingPolicy, setLoadingPolicy] = useState(true);\n const [filterUsers, setFilterUsers] = useState(\"\");\n const [loadingUsers, setLoadingUsers] = useState(true);\n const [filterGroups, setFilterGroups] = useState(\"\");\n const [loadingGroups, setLoadingGroups] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedTab, setSelectedTab] = useState(\"summary\");\n\n const ldapIsEnabled = (features && features.includes(\"ldap-idp\")) || false;\n\n const displayGroups = hasPermission(\n CONSOLE_UI_RESOURCE,\n listGroupPermissions,\n true,\n );\n\n const viewGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n getGroupPermissions,\n true,\n );\n\n const displayUsers = hasPermission(\n CONSOLE_UI_RESOURCE,\n listUsersPermissions,\n true,\n );\n\n const viewUser = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewUserPermissions,\n true,\n );\n\n const displayPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n true,\n );\n\n const canDeletePolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n deletePolicyPermissions,\n true,\n );\n\n const canEditPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n true,\n );\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n if (canEditPolicy) {\n api.policies\n .addPolicy({\n name: policyName,\n policy: policyDefinition,\n })\n .then((_) => {\n setAddLoading(false);\n dispatch(setSnackBarMessage(\"Policy successfully updated\"));\n refreshPolicyDetails();\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"There was an error updating the Policy \",\n detailedError:\n \"There was an error updating the Policy: \" +\n (err.error.detailedMessage || \"\") +\n \". Please check Policy syntax.\",\n }),\n );\n });\n } else {\n setAddLoading(false);\n }\n };\n\n useEffect(() => {\n const loadUsersForPolicy = () => {\n if (loadingUsers) {\n if (displayUsers && !ldapIsEnabled) {\n api.policies\n .listUsersForPolicy(encodeURLString(policyName))\n .then((result) => {\n setUserList(result.data ?? []);\n setLoadingUsers(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingUsers(false);\n });\n } else {\n setLoadingUsers(false);\n }\n }\n };\n\n const loadGroupsForPolicy = () => {\n if (loadingGroups) {\n if (displayGroups && !ldapIsEnabled) {\n api.policies\n .listGroupsForPolicy(encodeURLString(policyName))\n .then((result) => {\n setGroupList(result.data ?? []);\n setLoadingGroups(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingGroups(false);\n });\n } else {\n setLoadingGroups(false);\n }\n }\n };\n const loadPolicyDetails = () => {\n if (loadingPolicy) {\n if (displayPolicy) {\n api.policy\n .policyInfo(encodeURLString(policyName))\n .then((result) => {\n if (result.data) {\n setPolicy(result.data);\n setPolicyDefinition(\n result\n ? JSON.stringify(JSON.parse(result.data?.policy!), null, 4)\n : \"\",\n );\n const pol: IAMPolicy = JSON.parse(result.data?.policy!);\n setPolicyStatements(pol.Statement);\n }\n setLoadingPolicy(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingPolicy(false);\n });\n } else {\n setLoadingPolicy(false);\n }\n }\n };\n\n if (loadingPolicy) {\n loadPolicyDetails();\n loadUsersForPolicy();\n loadGroupsForPolicy();\n }\n }, [\n policyName,\n loadingPolicy,\n loadingUsers,\n loadingGroups,\n setUserList,\n setGroupList,\n setPolicyDefinition,\n setPolicy,\n setLoadingUsers,\n setLoadingGroups,\n displayUsers,\n displayGroups,\n displayPolicy,\n ldapIsEnabled,\n dispatch,\n ]);\n\n const resetForm = () => {\n setPolicyDefinition(\"{}\");\n };\n\n const validSave = policyName.trim() !== \"\";\n\n const deletePolicy = () => {\n setDeleteOpen(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n navigate(IAM_PAGES.POLICIES);\n };\n\n const userViewAction = (user: any) => {\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(user)}`);\n };\n const userTableActions = [\n {\n type: \"view\",\n onClick: userViewAction,\n disableButtonFunction: () => !viewUser,\n },\n ];\n\n const filteredUsers = userList.filter((elementItem) =>\n elementItem.includes(filterUsers),\n );\n\n const groupViewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURLString(group)}`);\n };\n\n const groupTableActions = [\n {\n type: \"view\",\n onClick: groupViewAction,\n disableButtonFunction: () => !viewGroup,\n },\n ];\n\n const filteredGroups = groupList.filter((elementItem) =>\n elementItem.includes(filterGroups),\n );\n\n const refreshPolicyDetails = () => {\n setLoadingUsers(true);\n setLoadingGroups(true);\n setLoadingPolicy(true);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"policy_details_summary\"));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n \n )}\n \n navigate(IAM_PAGES.POLICIES)}\n />\n \n }\n actions={}\n />\n \n }\n title={policyName}\n subTitle={IAM Policy}\n actions={\n \n \n \n }\n onClick={deletePolicy}\n disabled={!canDeletePolicy}\n />\n \n \n\n \n }\n onClick={() => {\n refreshPolicyDetails();\n }}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n \n \n dispatch(setHelpName(\"policy_details_summary\"))\n }\n >\n \n Policy Summary\n \n \n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Users\",\n disabled: !displayUsers || ldapIsEnabled,\n id: \"users\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_users\"))\n }\n >\n \n Users\n \n \n {userList.length > 0 && (\n \n {\n setFilterUsers(val);\n }}\n />\n \n )}\n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Groups\",\n disabled: !displayGroups || ldapIsEnabled,\n id: \"groups\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_groups\"))\n }\n >\n \n Groups\n \n \n {groupList.length > 0 && (\n \n {\n setFilterGroups(val);\n }}\n />\n \n )}\n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Raw Policy\",\n disabled: !displayPolicy,\n id: \"raw-policy\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_policy\"))\n }\n >\n \n \n Guide to access policy structure\n \n \n }\n placement=\"right\"\n >\n Raw Policy\n \n ) => {\n saveRecord(e);\n }}\n >\n \n \n {\n if (canEditPolicy) {\n setPolicyDefinition(value);\n }\n }}\n editorHeight={\"350px\"}\n helptip={\n \n \n Guide to access policy structure\n \n \n }\n />\n \n \n {!policy && (\n {\n resetForm();\n }}\n >\n Clear\n \n )}\n \n \n \n \n \n \n {addLoading && (\n \n \n \n )}\n \n \n \n \n ),\n },\n ]}\n currentTabOrPath={selectedTab}\n onTabClick={(tab) => setSelectedTab(tab)}\n />\n \n \n \n );\n};\n\nexport default PolicyDetails;\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["_ref","value","label","tooltip","mode","onChange","editorHeight","helptip","_jsx","CodeEditor","helpTools","Fragment","children","TooltipWrapper","CopyToClipboard","text","Button","type","id","icon","CopyIcon","color","variant","helpTip","helpTipPlacement","STATUS_COLORS","RED","GREEN","YELLOW","getDriveStatusColor","activeDisks","totalDrives","serverStatusColor","health_status","getNetworkStatusColor","activeNetwork","networkTotal","rowGridStyle","display","gridTemplateColumns","gap","Highlight","search","txtParts","RegExp","concat","arguments","length","undefined","replace","escapeRegExp","parts","String","split","map","part","index","test","_ref2","policyStatements","filter","setFilter","useState","_jsxs","Grid","container","item","xs","sx","alignItems","HelpTip","content","target","href","placement","sm","fontWeight","justifyContent","SearchBox","placeholder","maxWidth","borderBottom","borderTop","paddingTop","stmt","i","effect","Effect","isAllow","Box","className","fontSize","padding","marginRight","fill","height","width","EnabledIcon","DisabledIcon","Action","act","actIndex","Resource","res","resIndex","DeletePolicy","withSuspense","React","PolicyDetails","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","features","useSelector","selFeatures","policy","setPolicy","setPolicyStatements","userList","setUserList","groupList","setGroupList","addLoading","setAddLoading","policyName","decodeURLString","policyDefinition","setPolicyDefinition","loadingPolicy","setLoadingPolicy","filterUsers","setFilterUsers","loadingUsers","setLoadingUsers","filterGroups","setFilterGroups","loadingGroups","setLoadingGroups","deleteOpen","setDeleteOpen","selectedTab","setSelectedTab","ldapIsEnabled","includes","displayGroups","hasPermission","CONSOLE_UI_RESOURCE","listGroupPermissions","viewGroup","getGroupPermissions","displayUsers","listUsersPermissions","viewUser","viewUserPermissions","displayPolicy","viewPolicyPermissions","canDeletePolicy","deletePolicyPermissions","canEditPolicy","createPolicyPermissions","useEffect","api","policyInfo","encodeURLString","then","result","data","_result$data3","_result$data4","JSON","stringify","parse","pol","Statement","catch","err","setErrorSnackMessage","policies","listUsersForPolicy","_result$data","listGroupsForPolicy","_result$data2","validSave","trim","userTableActions","onClick","user","IAM_PAGES","USERS","disableButtonFunction","filteredUsers","elementItem","groupTableActions","group","GROUPS","filteredGroups","refreshPolicyDetails","setHelpName","selectedPolicy","closeDeleteModalAndRefresh","refresh","POLICIES","PageHeaderWrapper","BackLink","actions","HelpMenu","PageLayout","ScreenTitle","IAMPoliciesIcon","title","subTitle","SecureComponent","scopes","IAM_SCOPES","ADMIN_DELETE_POLICY","resource","errorProps","disabled","permissionTooltipHelper","TrashIcon","deletePolicy","RefreshIcon","marginBottom","Tabs","options","tabConfig","onMouseMove","SectionTitle","separator","withBorders","PolicyView","actionsTray","val","DataTable","itemActions","columns","elementKey","isLoading","records","entityName","idField","customPaperHeight","noValidate","autoComplete","onSubmit","e","preventDefault","addPolicy","name","_","setSnackBarMessage","errorMessage","detailedError","error","detailedMessage","CodeMirrorWrapper","ADMIN_CREATE_POLICY","ProgressBar","currentTabOrPath","onTabClick","tab","deselectCurrent","require","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","navigator","userAgent","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/2166.a0f01e1a.chunk.js b/web-app/build/static/js/2166.a0f01e1a.chunk.js new file mode 100644 index 000000000..45408b2df --- /dev/null +++ b/web-app/build/static/js/2166.a0f01e1a.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[2166],{72271:(e,t,a)=>{a.d(t,{A:()=>l});a(65043);var n=a(89923),i=a(70579);const l=e=>{let{iconComponent:t,entity:a}=e;return(0,i.jsx)(n.xA9,{container:!0,children:(0,i.jsx)(n.xA9,{item:!0,xs:12,children:(0,i.jsx)(n.lVp,{title:"".concat(a," not available"),iconComponent:t,help:(0,i.jsxs)(n.azJ,{sx:{fontSize:"14px",["@media (max-width: ".concat(n.nmC.sm,"px)")]:{display:"flex",flexFlow:"column"}},children:[(0,i.jsx)("span",{children:"This feature is not available for a single-disk setup.\xa0"}),(0,i.jsxs)("span",{children:["Please deploy a server in"," ",(0,i.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html?ref=con",target:"_blank",rel:"noopener",children:"Distributed Mode"})," ","to use this feature."]})]})})})})}},2166:(e,t,a)=>{a.r(t),a.d(t,{default:()=>g});var n=a(65043),i=a(89923),l=a(73216),s=a(22166),o=a(56483),c=a(64159),r=a(20554),d=a(14558),p=a(94141),x=a(72271),m=a(49501),h=a(28481),u=a(48793),f=a(55968),j=a(70579);const b=e=>{let{volumeVal:t,pathVal:a}=e;return(0,j.jsx)(i.azJ,{className:"code-block-container",children:(0,j.jsxs)(i.azJ,{className:"example-code-block",children:[(0,j.jsxs)(i.azJ,{sx:{display:"flex",marginBottom:"5px",flexFlow:"row",["@media (max-width: ".concat(i.nmC.sm,"px)")]:{flexFlow:"column"}},children:[(0,j.jsx)("label",{children:"Volume/bucket Name :"})," ",(0,j.jsx)("code",{children:t})]}),(0,j.jsxs)(i.azJ,{sx:{display:"flex",flexFlow:"row",["@media (max-width: ".concat(i.nmC.sm,"px)")]:{flexFlow:"column"}},children:[(0,j.jsx)("label",{children:"Path : "}),(0,j.jsx)("code",{children:a})]})]})})},g=()=>{const e=(0,r.jL)(),t=(0,l.Zp)(),a=(0,s.d4)(c.Rq),[g,w]=(0,n.useState)(""),[y,v]=(0,n.useState)(""),[k,C]=(0,n.useState)(!0),[z,T]=(0,n.useState)(""),[S,J]=(0,n.useState)(""),[F,V]=(0,n.useState)(!1),[A,I]=(0,n.useState)(""),[_,N]=(0,n.useState)(""),B=(0,d.vf)();(0,n.useEffect)((()=>{let e,t;e=g.trim().length>0,e?"/"===g.slice(0,1)&&(e=!1,I("Volume/Bucket name cannot start with /")):I("This field is required"),t=y.trim().length>0,y?"/"===y.slice(0,1)&&(t=!1,N("Path cannot start with /")):N("This field is required");const a=e&&t;e&&I(""),t&&N(""),V(a)}),[g,y]);const R=async()=>{let t=document.baseURI.replace(window.location.origin,"");(async e=>await fetch(e,{method:"GET"}))("".concat(t,"/api/v1/admin/inspect?volume=").concat(encodeURIComponent(g),"&file=").concat(encodeURIComponent(y),"&encrypt=").concat(k)).then((async t=>{if(!t.ok){const a=await t.json();e((0,c.C9)({errorMessage:a.message,detailedError:a.code}))}const a=await t.blob(),n=t.headers.get("content-disposition").split('"')[1],i=(0,o.UM)(n)||"";(0,o.OT)(a,n),J(n),T(i)})).catch((t=>{e((0,c.C9)(t))}))},E=()=>{w(""),v(""),C(!0)};return(0,n.useEffect)((()=>{e((0,c.ph)("inspect"))}),[]),(0,j.jsxs)(n.Fragment,{children:[(0,j.jsx)(u.A,{label:"Inspect",actions:(0,j.jsx)(f.A,{})}),(0,j.jsxs)(i.Mxu,{children:[!B&&(0,j.jsx)(h.A,{compactMode:!0}),a?(0,j.jsx)(i.Hbc,{helpBox:(0,j.jsx)(i.lVp,{title:"Learn more about the Inspect feature",iconComponent:(0,j.jsx)(i.nTF,{}),help:(0,j.jsxs)(n.Fragment,{children:[(0,j.jsx)(i.azJ,{sx:{marginTop:"16px",fontWeight:600,fontStyle:"italic",fontSize:"14px"},children:"Examples:"}),(0,j.jsxs)(i.azJ,{sx:{display:"flex",flexFlow:"column",fontSize:"14px",flex:"2","& .step-row":{fontSize:"14px",display:"flex",marginTop:"15px",marginBottom:"15px","&.step-text":{fontWeight:400},"&:before":{content:"' '",height:"7px",width:"7px",backgroundColor:"#2781B0",marginRight:"10px",marginTop:"7px",flexShrink:0}},"& .code-block-container":{flex:"1",marginTop:"15px",marginLeft:"35px","& input":{color:"#737373"}},"& .example-code-block label":{display:"inline-block",width:160,fontWeight:600,fontSize:14,["@media (max-width: ".concat(i.nmC.sm,"px)")]:{width:"100%"}},"& code":{width:100,paddingLeft:"10px",fontFamily:"monospace",paddingRight:"10px",paddingTop:"3px",paddingBottom:"3px",borderRadius:"2px",border:"1px solid #eaeaea",fontSize:"10px",fontWeight:500,["@media (max-width: ".concat(i.nmC.sm,"px)")]:{width:"100%"}},"& .spacer":{marginBottom:"5px"}},children:[(0,j.jsxs)(i.azJ,{children:[(0,j.jsx)(i.azJ,{className:"step-row",children:(0,j.jsx)("div",{className:"step-text",children:"To Download 'xl.meta' for a specific object from all the drives in a zip file:"})}),(0,j.jsx)(b,{pathVal:"test*/xl.meta",volumeVal:"test-bucket"})]}),(0,j.jsxs)(i.azJ,{children:[(0,j.jsx)(i.azJ,{className:"step-row",children:(0,j.jsx)("div",{className:"step-text",children:"To Download all constituent parts for a specific object, and optionally encrypt the downloaded zip:"})}),(0,j.jsx)(b,{pathVal:"test*/xl.meta",volumeVal:"test*/*/part.*"})]}),(0,j.jsxs)(i.azJ,{children:[(0,j.jsx)(i.azJ,{className:"step-row",children:(0,j.jsxs)("div",{className:"step-text",children:["To Download recursively all objects at a prefix.",(0,j.jsx)("br",{}),"NOTE: This can be an expensive operation use it with caution."]})}),(0,j.jsx)(b,{pathVal:"test*/xl.meta",volumeVal:"test/**"})]})]}),(0,j.jsxs)(i.azJ,{sx:{marginTop:"30px",marginLeft:"15px",fontSize:"14px"},children:["You can learn more at our"," ",(0,j.jsx)("a",{href:"https://github.com/minio/minio/tree/master/docs/debugging?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})]})}),children:(0,j.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{e.preventDefault(),B?R():t("/support/register")},children:[(0,j.jsx)(i.cl_,{id:"inspect_volume",name:"inspect_volume",onChange:e=>{w(e.target.value)},label:"Volume or Bucket Name",value:g,error:A,required:!0,placeholder:"test-bucket",disabled:!B}),(0,j.jsx)(i.cl_,{id:"inspect_path",name:"inspect_path",error:_,onChange:e=>{v(e.target.value)},label:"File or Path to inspect",value:y,required:!0,placeholder:"test*/xl.meta",disabled:!B}),(0,j.jsx)(i.dOG,{label:"Encrypt",indicatorLabels:["True","False"],checked:k,value:"true",id:"inspect_encrypt",name:"inspect_encrypt",onChange:()=>{C(!k)},disabled:!B}),(0,j.jsxs)(i.azJ,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"55px"},children:[(0,j.jsx)(i.$nd,{id:"inspect-clear-button",style:{marginRight:"15px"},type:"button",variant:"regular","data-test-id":"inspect-clear-button",onClick:E,label:"Clear",disabled:!B}),(0,j.jsx)(i.$nd,{id:"inspect-start",type:"submit",variant:B?"callAction":"regular","data-test-id":"inspect-submit-button",disabled:!F||!B,label:"Inspect"})]})]})}):(0,j.jsx)(x.A,{iconComponent:(0,j.jsx)(i.nTF,{}),entity:"Inspect"}),z?(0,j.jsx)(p.A,{modalOpen:!0,title:"Inspect Decryption Key",onClose:()=>{(0,o.Yj)(S),T(""),E()},titleIcon:(0,j.jsx)(i.aJN,{}),children:(0,j.jsxs)(n.Fragment,{children:[(0,j.jsxs)(i.azJ,{children:["This will be displayed only once. It cannot be recovered.",(0,j.jsx)("br",{}),"Use secure medium to share this key."]}),(0,j.jsx)("form",{noValidate:!0,onSubmit:()=>!1,children:(0,j.jsx)(m.A,{value:z})})]})}):null]})]})}},49501:(e,t,a)=>{a.d(t,{A:()=>s});var n=a(65043),i=a(89923),l=a(70579);const s=e=>{let{value:t}=e;const[a,s]=(0,n.useState)(!1);return(0,l.jsxs)(i.azJ,{sx:{display:"flex",alignItems:"center",flexFlow:"row",["@media (max-width: ".concat(i.nmC.sm,"px)")]:{flexFlow:"column"}},children:[(0,l.jsx)(i.cl_,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:a?"text":"password",onChange:()=>{},value:t,overlayIcon:(0,l.jsx)(i.TdU,{}),readOnly:!0,overlayAction:()=>navigator.clipboard.writeText(t)}),(0,l.jsx)(i.$nd,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:()=>s(!a),label:"Show/Hide"})]})}}}]); +//# sourceMappingURL=2166.a0f01e1a.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/2166.a0f01e1a.chunk.js.map b/web-app/build/static/js/2166.a0f01e1a.chunk.js.map new file mode 100644 index 000000000..b80c32321 --- /dev/null +++ b/web-app/build/static/js/2166.a0f01e1a.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/2166.a0f01e1a.chunk.js","mappings":"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","sources":["screens/Console/Common/DistributedOnly/DistributedOnly.tsx","screens/Console/Tools/Inspect.tsx","screens/Console/Tools/KeyRevealer.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { HelpBox, Box, Grid, breakPoints } from \"mds\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n \n \n This feature is not available for a single-disk setup. \n \n \n Please deploy a server in{\" \"}\n \n Distributed Mode\n {\" \"}\n to use this feature.\n \n \n }\n />\n \n \n );\n};\n\nexport default DistributedOnly;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Box,\n breakPoints,\n Button,\n FormLayout,\n HelpBox,\n InputBox,\n InspectMenuIcon,\n PageLayout,\n PasswordKeyIcon,\n Switch,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport {\n deleteCookie,\n getCookieValue,\n performDownload,\n} from \"../../../common/utils\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n setHelpName,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { registeredCluster } from \"../../../config\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport DistributedOnly from \"../Common/DistributedOnly/DistributedOnly\";\nimport KeyRevealer from \"./KeyRevealer\";\nimport RegisterCluster from \"../Support/RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst ExampleBlock = ({\n volumeVal,\n pathVal,\n}: {\n volumeVal: string;\n pathVal: string;\n}) => {\n return (\n \n \n \n {volumeVal}\n \n \n \n {pathVal}\n \n \n \n );\n};\n\nconst Inspect = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const distributedSetup = useSelector(selDistSet);\n\n const [volumeName, setVolumeName] = useState(\"\");\n const [inspectPath, setInspectPath] = useState(\"\");\n const [isEncrypt, setIsEncrypt] = useState(true);\n\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n\n const [insFileName, setInsFileName] = useState(\"\");\n\n const [isFormValid, setIsFormValid] = useState(false);\n const [volumeError, setVolumeError] = useState(\"\");\n const [pathError, setPathError] = useState(\"\");\n const clusterRegistered = registeredCluster();\n /**\n * Validation Effect\n */\n useEffect(() => {\n let isVolValid;\n let isPathValid;\n\n isVolValid = volumeName.trim().length > 0;\n if (!isVolValid) {\n setVolumeError(\"This field is required\");\n } else if (volumeName.slice(0, 1) === \"/\") {\n isVolValid = false;\n setVolumeError(\"Volume/Bucket name cannot start with /\");\n }\n isPathValid = inspectPath.trim().length > 0;\n if (!inspectPath) {\n setPathError(\"This field is required\");\n } else if (inspectPath.slice(0, 1) === \"/\") {\n isPathValid = false;\n setPathError(\"Path cannot start with /\");\n }\n const isValid = isVolValid && isPathValid;\n\n if (isVolValid) {\n setVolumeError(\"\");\n }\n if (isPathValid) {\n setPathError(\"\");\n }\n\n setIsFormValid(isValid);\n }, [volumeName, inspectPath]);\n\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n let basename = document.baseURI.replace(window.location.origin, \"\");\n const urlOfInspectApi = `${basename}/api/v1/admin/inspect?volume=${encodeURIComponent(volumeName)}&file=${encodeURIComponent(inspectPath)}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n }),\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const resetForm = () => {\n setVolumeName(\"\");\n setInspectPath(\"\");\n setIsEncrypt(true);\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n setDecryptionKey(\"\");\n resetForm();\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"inspect\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n\n \n {!clusterRegistered && }\n {!distributedSetup ? (\n }\n entity={\"Inspect\"}\n />\n ) : (\n }\n help={\n \n \n Examples:\n \n\n \n \n \n
\n To Download 'xl.meta' for a specific object from all\n the drives in a zip file:\n
\n
\n\n \n
\n\n \n \n
\n To Download all constituent parts for a specific\n object, and optionally encrypt the downloaded zip:\n
\n
\n\n \n
\n \n \n
\n To Download recursively all objects at a prefix.\n
\n NOTE: This can be an expensive operation use it with\n caution.\n
\n
\n \n
\n \n\n \n You can learn more at our{\" \"}\n \n documentation\n \n .\n \n
\n }\n />\n }\n >\n ) => {\n e.preventDefault();\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n performInspect();\n }}\n >\n ) => {\n setVolumeName(e.target.value);\n }}\n label=\"Volume or Bucket Name\"\n value={volumeName}\n error={volumeError}\n required\n placeholder={\"test-bucket\"}\n disabled={!clusterRegistered}\n />\n ) => {\n setInspectPath(e.target.value);\n }}\n label=\"File or Path to inspect\"\n value={inspectPath}\n required\n placeholder={\"test*/xl.meta\"}\n disabled={!clusterRegistered}\n />\n {\n setIsEncrypt(!isEncrypt);\n }}\n disabled={!clusterRegistered}\n />\n \n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n \n This will be displayed only once. It cannot be recovered.\n
\n Use secure medium to share this key.\n
\n {\n return false;\n }}\n >\n \n \n
\n \n ) : null}\n
\n
\n );\n};\n\nexport default Inspect;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button, CopyIcon, InputBox, Box, breakPoints } from \"mds\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n readOnly={true}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n"],"names":["_ref","iconComponent","entity","_jsx","Grid","container","children","item","xs","HelpBox","title","concat","help","_jsxs","Box","sx","fontSize","breakPoints","sm","display","flexFlow","href","target","rel","ExampleBlock","volumeVal","pathVal","className","marginBottom","Inspect","dispatch","useAppDispatch","navigate","useNavigate","distributedSetup","useSelector","selDistSet","volumeName","setVolumeName","useState","inspectPath","setInspectPath","isEncrypt","setIsEncrypt","decryptionKey","setDecryptionKey","insFileName","setInsFileName","isFormValid","setIsFormValid","volumeError","setVolumeError","pathError","setPathError","clusterRegistered","registeredCluster","useEffect","isVolValid","isPathValid","trim","length","slice","isValid","performInspect","async","basename","document","baseURI","replace","window","location","origin","fetch","url","method","makeRequest","encodeURIComponent","then","res","ok","resErr","json","setErrorSnackMessage","errorMessage","message","detailedError","code","blob","filename","headers","get","split","decryptKey","getCookieValue","performDownload","catch","err","resetForm","setHelpName","Fragment","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","RegisterCluster","compactMode","FormLayout","helpBox","InspectMenuIcon","marginTop","fontWeight","fontStyle","flex","content","height","width","backgroundColor","marginRight","flexShrink","marginLeft","color","paddingLeft","fontFamily","paddingRight","paddingTop","paddingBottom","borderRadius","border","noValidate","autoComplete","onSubmit","e","preventDefault","InputBox","id","name","onChange","value","error","required","placeholder","disabled","Switch","indicatorLabels","checked","alignItems","justifyContent","Button","style","type","variant","onClick","DistributedOnly","ModalWrapper","modalOpen","onClose","onCloseDecKeyModal","deleteCookie","titleIcon","PasswordKeyIcon","KeyRevealer","shown","setShown","overlayIcon","CopyIcon","readOnly","overlayAction","navigator","clipboard","writeText"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/2166.bb4ae347.chunk.js b/web-app/build/static/js/2166.bb4ae347.chunk.js deleted file mode 100644 index 3eed409bc..000000000 --- a/web-app/build/static/js/2166.bb4ae347.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[2166],{72271:(e,t,a)=>{a.d(t,{A:()=>i});a(65043);var n=a(89923),s=a(70579);const i=e=>{let{iconComponent:t,entity:a}=e;return(0,s.jsx)(n.xA9,{container:!0,children:(0,s.jsx)(n.xA9,{item:!0,xs:12,children:(0,s.jsx)(n.lVp,{title:"".concat(a," not available"),iconComponent:t,help:(0,s.jsxs)(n.azJ,{sx:{fontSize:"14px",["@media (max-width: ".concat(n.nmC.sm,"px)")]:{display:"flex",flexFlow:"column"}},children:[(0,s.jsx)("span",{children:"This feature is not available for a single-disk setup.\xa0"}),(0,s.jsxs)("span",{children:["Please deploy a server in"," ",(0,s.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html?ref=con",target:"_blank",rel:"noopener",children:"Distributed Mode"})," ","to use this feature."]})]})})})})}},2166:(e,t,a)=>{a.r(t),a.d(t,{default:()=>g});var n=a(65043),s=a(89923),i=a(73216),l=a(22166),o=a(56483),c=a(64159),r=a(20554),d=a(14558),p=a(94141),x=a(72271),m=a(49501),h=a(28481),u=a(48793),f=a(55968),j=a(70579);const b=e=>{let{volumeVal:t,pathVal:a}=e;return(0,j.jsx)(s.azJ,{className:"code-block-container",children:(0,j.jsxs)(s.azJ,{className:"example-code-block",children:[(0,j.jsxs)(s.azJ,{sx:{display:"flex",marginBottom:"5px",flexFlow:"row",["@media (max-width: ".concat(s.nmC.sm,"px)")]:{flexFlow:"column"}},children:[(0,j.jsx)("label",{children:"Volume/bucket Name :"})," ",(0,j.jsx)("code",{children:t})]}),(0,j.jsxs)(s.azJ,{sx:{display:"flex",flexFlow:"row",["@media (max-width: ".concat(s.nmC.sm,"px)")]:{flexFlow:"column"}},children:[(0,j.jsx)("label",{children:"Path : "}),(0,j.jsx)("code",{children:a})]})]})})},g=()=>{const e=(0,r.jL)(),t=(0,i.Zp)(),a=(0,l.d4)(c.Rq),[g,w]=(0,n.useState)(""),[y,v]=(0,n.useState)(""),[k,z]=(0,n.useState)(!0),[C,T]=(0,n.useState)(""),[S,J]=(0,n.useState)(""),[F,V]=(0,n.useState)(!1),[A,_]=(0,n.useState)(""),[N,I]=(0,n.useState)(""),B=(0,d.vf)();(0,n.useEffect)((()=>{let e,t;e=g.trim().length>0,e?"/"===g.slice(0,1)&&(e=!1,_("Volume/Bucket name cannot start with /")):_("This field is required"),t=y.trim().length>0,y?"/"===y.slice(0,1)&&(t=!1,I("Path cannot start with /")):I("This field is required");const a=e&&t;e&&_(""),t&&I(""),V(a)}),[g,y]);const E=async()=>{const t=(0,o.nf)(y),a=(0,o.nf)(g);let n=document.baseURI.replace(window.location.origin,"");(async e=>await fetch(e,{method:"GET"}))("".concat(n,"/api/v1/admin/inspect?volume=").concat(a,"&file=").concat(t,"&encrypt=").concat(k)).then((async t=>{if(!t.ok){const a=await t.json();e((0,c.C9)({errorMessage:a.message,detailedError:a.code}))}const a=await t.blob(),n=t.headers.get("content-disposition").split('"')[1],s=(0,o.UM)(n)||"";(0,o.OT)(a,n),J(n),T(s)})).catch((t=>{e((0,c.C9)(t))}))},L=()=>{w(""),v(""),z(!0)};return(0,n.useEffect)((()=>{e((0,c.ph)("inspect"))}),[]),(0,j.jsxs)(n.Fragment,{children:[(0,j.jsx)(u.A,{label:"Inspect",actions:(0,j.jsx)(f.A,{})}),(0,j.jsxs)(s.Mxu,{children:[!B&&(0,j.jsx)(h.A,{compactMode:!0}),a?(0,j.jsx)(s.Hbc,{helpBox:(0,j.jsx)(s.lVp,{title:"Learn more about the Inspect feature",iconComponent:(0,j.jsx)(s.nTF,{}),help:(0,j.jsxs)(n.Fragment,{children:[(0,j.jsx)(s.azJ,{sx:{marginTop:"16px",fontWeight:600,fontStyle:"italic",fontSize:"14px"},children:"Examples:"}),(0,j.jsxs)(s.azJ,{sx:{display:"flex",flexFlow:"column",fontSize:"14px",flex:"2","& .step-row":{fontSize:"14px",display:"flex",marginTop:"15px",marginBottom:"15px","&.step-text":{fontWeight:400},"&:before":{content:"' '",height:"7px",width:"7px",backgroundColor:"#2781B0",marginRight:"10px",marginTop:"7px",flexShrink:0}},"& .code-block-container":{flex:"1",marginTop:"15px",marginLeft:"35px","& input":{color:"#737373"}},"& .example-code-block label":{display:"inline-block",width:160,fontWeight:600,fontSize:14,["@media (max-width: ".concat(s.nmC.sm,"px)")]:{width:"100%"}},"& code":{width:100,paddingLeft:"10px",fontFamily:"monospace",paddingRight:"10px",paddingTop:"3px",paddingBottom:"3px",borderRadius:"2px",border:"1px solid #eaeaea",fontSize:"10px",fontWeight:500,["@media (max-width: ".concat(s.nmC.sm,"px)")]:{width:"100%"}},"& .spacer":{marginBottom:"5px"}},children:[(0,j.jsxs)(s.azJ,{children:[(0,j.jsx)(s.azJ,{className:"step-row",children:(0,j.jsx)("div",{className:"step-text",children:"To Download 'xl.meta' for a specific object from all the drives in a zip file:"})}),(0,j.jsx)(b,{pathVal:"test*/xl.meta",volumeVal:"test-bucket"})]}),(0,j.jsxs)(s.azJ,{children:[(0,j.jsx)(s.azJ,{className:"step-row",children:(0,j.jsx)("div",{className:"step-text",children:"To Download all constituent parts for a specific object, and optionally encrypt the downloaded zip:"})}),(0,j.jsx)(b,{pathVal:"test*/xl.meta",volumeVal:"test*/*/part.*"})]}),(0,j.jsxs)(s.azJ,{children:[(0,j.jsx)(s.azJ,{className:"step-row",children:(0,j.jsxs)("div",{className:"step-text",children:["To Download recursively all objects at a prefix.",(0,j.jsx)("br",{}),"NOTE: This can be an expensive operation use it with caution."]})}),(0,j.jsx)(b,{pathVal:"test*/xl.meta",volumeVal:"test/**"})]})]}),(0,j.jsxs)(s.azJ,{sx:{marginTop:"30px",marginLeft:"15px",fontSize:"14px"},children:["You can learn more at our"," ",(0,j.jsx)("a",{href:"https://github.com/minio/minio/tree/master/docs/debugging?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})]})}),children:(0,j.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{e.preventDefault(),B?E():t("/support/register")},children:[(0,j.jsx)(s.cl_,{id:"inspect_volume",name:"inspect_volume",onChange:e=>{w(e.target.value)},label:"Volume or Bucket Name",value:g,error:A,required:!0,placeholder:"test-bucket",disabled:!B}),(0,j.jsx)(s.cl_,{id:"inspect_path",name:"inspect_path",error:N,onChange:e=>{v(e.target.value)},label:"File or Path to inspect",value:y,required:!0,placeholder:"test*/xl.meta",disabled:!B}),(0,j.jsx)(s.dOG,{label:"Encrypt",indicatorLabels:["True","False"],checked:k,value:"true",id:"inspect_encrypt",name:"inspect_encrypt",onChange:()=>{z(!k)},disabled:!B}),(0,j.jsxs)(s.azJ,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"55px"},children:[(0,j.jsx)(s.$nd,{id:"inspect-clear-button",style:{marginRight:"15px"},type:"button",variant:"regular","data-test-id":"inspect-clear-button",onClick:L,label:"Clear",disabled:!B}),(0,j.jsx)(s.$nd,{id:"inspect-start",type:"submit",variant:B?"callAction":"regular","data-test-id":"inspect-submit-button",disabled:!F||!B,label:"Inspect"})]})]})}):(0,j.jsx)(x.A,{iconComponent:(0,j.jsx)(s.nTF,{}),entity:"Inspect"}),C?(0,j.jsx)(p.A,{modalOpen:!0,title:"Inspect Decryption Key",onClose:()=>{(0,o.Yj)(S),T(""),L()},titleIcon:(0,j.jsx)(s.aJN,{}),children:(0,j.jsxs)(n.Fragment,{children:[(0,j.jsxs)(s.azJ,{children:["This will be displayed only once. It cannot be recovered.",(0,j.jsx)("br",{}),"Use secure medium to share this key."]}),(0,j.jsx)("form",{noValidate:!0,onSubmit:()=>!1,children:(0,j.jsx)(m.A,{value:C})})]})}):null]})]})}},49501:(e,t,a)=>{a.d(t,{A:()=>l});var n=a(65043),s=a(89923),i=a(70579);const l=e=>{let{value:t}=e;const[a,l]=(0,n.useState)(!1);return(0,i.jsxs)(s.azJ,{sx:{display:"flex",alignItems:"center",flexFlow:"row",["@media (max-width: ".concat(s.nmC.sm,"px)")]:{flexFlow:"column"}},children:[(0,i.jsx)(s.cl_,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:a?"text":"password",onChange:()=>{},value:t,overlayIcon:(0,i.jsx)(s.TdU,{}),readOnly:!0,overlayAction:()=>navigator.clipboard.writeText(t)}),(0,i.jsx)(s.$nd,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:()=>l(!a),label:"Show/Hide"})]})}}}]); -//# sourceMappingURL=2166.bb4ae347.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/2166.bb4ae347.chunk.js.map b/web-app/build/static/js/2166.bb4ae347.chunk.js.map deleted file mode 100644 index 00dcca066..000000000 --- a/web-app/build/static/js/2166.bb4ae347.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/2166.bb4ae347.chunk.js","mappings":"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","sources":["screens/Console/Common/DistributedOnly/DistributedOnly.tsx","screens/Console/Tools/Inspect.tsx","screens/Console/Tools/KeyRevealer.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { HelpBox, Box, Grid, breakPoints } from \"mds\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n \n \n This feature is not available for a single-disk setup. \n \n \n Please deploy a server in{\" \"}\n \n Distributed Mode\n {\" \"}\n to use this feature.\n \n \n }\n />\n \n \n );\n};\n\nexport default DistributedOnly;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Box,\n breakPoints,\n Button,\n FormLayout,\n HelpBox,\n InputBox,\n InspectMenuIcon,\n PageLayout,\n PasswordKeyIcon,\n Switch,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport {\n deleteCookie,\n encodeURLString,\n getCookieValue,\n performDownload,\n} from \"../../../common/utils\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n setHelpName,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { registeredCluster } from \"../../../config\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport DistributedOnly from \"../Common/DistributedOnly/DistributedOnly\";\nimport KeyRevealer from \"./KeyRevealer\";\nimport RegisterCluster from \"../Support/RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst ExampleBlock = ({\n volumeVal,\n pathVal,\n}: {\n volumeVal: string;\n pathVal: string;\n}) => {\n return (\n \n \n \n {volumeVal}\n \n \n \n {pathVal}\n \n \n \n );\n};\n\nconst Inspect = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const distributedSetup = useSelector(selDistSet);\n\n const [volumeName, setVolumeName] = useState(\"\");\n const [inspectPath, setInspectPath] = useState(\"\");\n const [isEncrypt, setIsEncrypt] = useState(true);\n\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n\n const [insFileName, setInsFileName] = useState(\"\");\n\n const [isFormValid, setIsFormValid] = useState(false);\n const [volumeError, setVolumeError] = useState(\"\");\n const [pathError, setPathError] = useState(\"\");\n const clusterRegistered = registeredCluster();\n /**\n * Validation Effect\n */\n useEffect(() => {\n let isVolValid;\n let isPathValid;\n\n isVolValid = volumeName.trim().length > 0;\n if (!isVolValid) {\n setVolumeError(\"This field is required\");\n } else if (volumeName.slice(0, 1) === \"/\") {\n isVolValid = false;\n setVolumeError(\"Volume/Bucket name cannot start with /\");\n }\n isPathValid = inspectPath.trim().length > 0;\n if (!inspectPath) {\n setPathError(\"This field is required\");\n } else if (inspectPath.slice(0, 1) === \"/\") {\n isPathValid = false;\n setPathError(\"Path cannot start with /\");\n }\n const isValid = isVolValid && isPathValid;\n\n if (isVolValid) {\n setVolumeError(\"\");\n }\n if (isPathValid) {\n setPathError(\"\");\n }\n\n setIsFormValid(isValid);\n }, [volumeName, inspectPath]);\n\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n const file = encodeURLString(inspectPath);\n const volume = encodeURLString(volumeName);\n\n let basename = document.baseURI.replace(window.location.origin, \"\");\n const urlOfInspectApi = `${basename}/api/v1/admin/inspect?volume=${volume}&file=${file}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n }),\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const resetForm = () => {\n setVolumeName(\"\");\n setInspectPath(\"\");\n setIsEncrypt(true);\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n setDecryptionKey(\"\");\n resetForm();\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"inspect\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n\n \n {!clusterRegistered && }\n {!distributedSetup ? (\n }\n entity={\"Inspect\"}\n />\n ) : (\n }\n help={\n \n \n Examples:\n \n\n \n \n \n
\n To Download 'xl.meta' for a specific object from all\n the drives in a zip file:\n
\n
\n\n \n
\n\n \n \n
\n To Download all constituent parts for a specific\n object, and optionally encrypt the downloaded zip:\n
\n
\n\n \n
\n \n \n
\n To Download recursively all objects at a prefix.\n
\n NOTE: This can be an expensive operation use it with\n caution.\n
\n
\n \n
\n \n\n \n You can learn more at our{\" \"}\n \n documentation\n \n .\n \n
\n }\n />\n }\n >\n ) => {\n e.preventDefault();\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n performInspect();\n }}\n >\n ) => {\n setVolumeName(e.target.value);\n }}\n label=\"Volume or Bucket Name\"\n value={volumeName}\n error={volumeError}\n required\n placeholder={\"test-bucket\"}\n disabled={!clusterRegistered}\n />\n ) => {\n setInspectPath(e.target.value);\n }}\n label=\"File or Path to inspect\"\n value={inspectPath}\n required\n placeholder={\"test*/xl.meta\"}\n disabled={!clusterRegistered}\n />\n {\n setIsEncrypt(!isEncrypt);\n }}\n disabled={!clusterRegistered}\n />\n \n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n \n This will be displayed only once. It cannot be recovered.\n
\n Use secure medium to share this key.\n
\n {\n return false;\n }}\n >\n \n \n
\n \n ) : null}\n
\n
\n );\n};\n\nexport default Inspect;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button, CopyIcon, InputBox, Box, breakPoints } from \"mds\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n readOnly={true}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n"],"names":["_ref","iconComponent","entity","_jsx","Grid","container","children","item","xs","HelpBox","title","concat","help","_jsxs","Box","sx","fontSize","breakPoints","sm","display","flexFlow","href","target","rel","ExampleBlock","volumeVal","pathVal","className","marginBottom","Inspect","dispatch","useAppDispatch","navigate","useNavigate","distributedSetup","useSelector","selDistSet","volumeName","setVolumeName","useState","inspectPath","setInspectPath","isEncrypt","setIsEncrypt","decryptionKey","setDecryptionKey","insFileName","setInsFileName","isFormValid","setIsFormValid","volumeError","setVolumeError","pathError","setPathError","clusterRegistered","registeredCluster","useEffect","isVolValid","isPathValid","trim","length","slice","isValid","performInspect","async","file","encodeURLString","volume","basename","document","baseURI","replace","window","location","origin","fetch","url","method","makeRequest","then","res","ok","resErr","json","setErrorSnackMessage","errorMessage","message","detailedError","code","blob","filename","headers","get","split","decryptKey","getCookieValue","performDownload","catch","err","resetForm","setHelpName","Fragment","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","RegisterCluster","compactMode","FormLayout","helpBox","InspectMenuIcon","marginTop","fontWeight","fontStyle","flex","content","height","width","backgroundColor","marginRight","flexShrink","marginLeft","color","paddingLeft","fontFamily","paddingRight","paddingTop","paddingBottom","borderRadius","border","noValidate","autoComplete","onSubmit","e","preventDefault","InputBox","id","name","onChange","value","error","required","placeholder","disabled","Switch","indicatorLabels","checked","alignItems","justifyContent","Button","style","type","variant","onClick","DistributedOnly","ModalWrapper","modalOpen","onClose","onCloseDecKeyModal","deleteCookie","titleIcon","PasswordKeyIcon","KeyRevealer","shown","setShown","overlayIcon","CopyIcon","readOnly","overlayAction","navigator","clipboard","writeText"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/2959.c4f178f1.chunk.js b/web-app/build/static/js/2959.c4f178f1.chunk.js deleted file mode 100644 index 632c34fe9..000000000 --- a/web-app/build/static/js/2959.c4f178f1.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[2959,614],{30614:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var s=n(65043),o=n(94141),a=n(89923),i=n(56629),l=n(53518),r=n(77403),c=n(64159),d=n(20554),u=n(70579);const h=e=>{let{modalOpen:t,onClose:n,bucket:h,prefilledRoute:x}=e;const m=(0,d.jL)(),[p,j]=(0,s.useState)(""),[b,g]=(0,s.useState)("readonly");(0,s.useEffect)((()=>{x&&j(x)}),[x]);return(0,u.jsx)(o.A,{modalOpen:t,title:"Add Anonymous Access Rule",onClose:n,titleIcon:(0,u.jsx)(a.No_,{}),children:(0,u.jsxs)(a.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,u.jsx)(a.cl_,{value:p,label:"Prefix",id:"prefix",name:"prefix",placeholder:"Enter Prefix",onChange:e=>{j(e.target.value)},tooltip:"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy."}),(0,u.jsx)(a.l6P,{id:"access",name:"Access",onChange:e=>{g(e)},label:"Access",value:b,options:[{label:"readonly",value:"readonly"},{label:"writeonly",value:"writeonly"},{label:"readwrite",value:"readwrite"}],disabled:!1,helpTip:(0,u.jsx)(s.Fragment,{children:"Select the desired level of access available to unauthenticated Users"}),helpTipPlacement:"right"}),(0,u.jsxs)(a.xA9,{item:!0,xs:12,sx:r.Uz.modalButtonBar,children:[(0,u.jsx)(a.$nd,{id:"clear",type:"button",variant:"regular",onClick:()=>{j(""),g("readonly")},label:"Clear"}),(0,u.jsx)(a.$nd,{id:"add-access-save",type:"submit",variant:"callAction",disabled:""===p.trim(),onClick:()=>{i.F.bucket.setAccessRuleWithBucket(h,{prefix:p,access:b}).then((e=>{m((0,c.Hk)("Access Rule added successfully")),n()})).catch((e=>{m((0,c.C9)((0,l.S)(e.error))),n()}))},label:"Save"})]})]})})}},27945:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Me});var s=n(65043),o=n(22166),a=n(73216),i=n(56629),l=n(20554),r=n(99161),c=n(56483),d=n(6035),u=n(33097),h=n.n(u),x=n(89923),m=n(53518),p=n(94281),j=n(24241),b=n(61476),g=n.n(b),f=n(94574),v=n(35475),_=n(77938),S=n(72237),O=n(64159);const w=e=>(e.match(/\.([^.]*?)(?=\?|#|$)/)||[])[1],T=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const s=Object.keys(e).reduce(((n,s)=>(w(s)&&s.includes(t)&&(n[s]=e[s]),n)),{});return Object.keys(s).filter((e=>{const o=s[e].some((e=>n.find((t=>{let n=!1;if(-1!==t.indexOf("*")){const s=t.substring(0,t.length-1);n=e.includes(s)}return n||e===t})))),a=e.substring(0,e.indexOf("/*."))==="arn:aws:s3:::".concat(t);return o&&(a&&"arn:aws:s3:::*"!==e)}))};var y=n(70579);const C=(0,S.A)(s.lazy((()=>n.e(7774).then(n.bind(n,97774))))),E=f.Ay.div((()=>({display:"flex","& .additionalOptions":{paddingRight:"10px",display:"flex",alignItems:"center",["@media (max-width: ".concat(x.nmC.lg,"px)")]:{display:"none"}},"& .slashSpacingStyle":{margin:"0 5px"}}))),N=e=>{let{bucketName:t,internalPaths:n,hidePathButton:i,additionalOptions:u}=e;const h=(0,l.jL)(),m=(0,a.Zp)(),p=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),j=(0,o.d4)((e=>e.objectBrowser.versionsMode)),b=(0,o.d4)((e=>e.objectBrowser.versionedFile)),f=(0,o.d4)((e=>e.system.anonymousMode)),[S,w]=(0,s.useState)(!1),[N,A]=(0,s.useState)(!1),I=[r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],k=(0,o.d4)((e=>e.console.session&&e.console.session.permissions||{}));let B=n;""!==n&&(B="/".concat(n));const F=B.split("/").filter((e=>""!==e)),L=F.length-1,V=t+B||t,D=T(k,V,I);(0,s.useEffect)((()=>{A(!1),Object.keys(k).forEach((e=>{e.includes(V)&&e.includes("/*")&&A(!0)}))}),[V,n,k]);const P=(0,_._)([V,...D],I)||f||N;let R=F.map(((e,n)=>{const o="".concat(F.slice(0,n+1).join("/"),"/"),a="/browser/".concat(t,"/").concat(o?"".concat((0,c.nf)(o)):"");return n===L&&e===b?null:(0,y.jsxs)(s.Fragment,{children:[(0,y.jsx)("span",{className:"slashSpacingStyle",children:"/"}),n===L?(0,y.jsx)("span",{style:{cursor:"default",whiteSpace:"pre"},children:(0,c.Tw)(e)}):(0,y.jsx)(v.N_,{style:{whiteSpace:"pre"},to:a,onClick:()=>{h((0,d.cQ)({status:!1,objectName:""}))},children:(0,c.Tw)(e)})]},"breadcrumbs-".concat(n.toString()))})),U=[];j&&(U=[(0,y.jsx)(s.Fragment,{children:(0,y.jsxs)("span",{children:[(0,y.jsx)("span",{className:"slashSpacingStyle",children:"/"}),b," - Versions"]})},"breadcrumbs-versionedItem")]);const z=[(0,y.jsx)(s.Fragment,{children:(0,y.jsx)(v.N_,{to:"/browser/".concat(t),onClick:()=>{h((0,d.cQ)({status:!1,objectName:""}))},children:t})},"breadcrumbs-root-path"),...R,...U];return(0,y.jsxs)(s.Fragment,{children:[(0,y.jsxs)(E,{children:[S&&(0,y.jsx)(C,{modalOpen:S,bucketName:t,folderName:n,onClose:()=>{w(!1)},limitedSubPath:N&&!((0,_._)([V,...D],I)||f)}),(0,y.jsx)(x.BIu,{sx:{whiteSpace:"pre"},goBackFunction:()=>{if(j)h((0,d.cQ)({status:!1,objectName:""}));else{if(0===F.length)return void m("/browser");const e=F.slice(0,-1);m("/browser/".concat(t).concat(e.length>0?"/".concat((0,c.nf)("".concat(e.join("/"),"/"))):""))}},additionalOptions:(0,y.jsxs)(s.Fragment,{children:[(0,y.jsx)(g(),{text:"".concat(t,"/").concat(F.join("/")),children:(0,y.jsx)(x.$nd,{id:"copy-path",icon:(0,y.jsx)(x.TdU,{style:{width:"12px",height:"12px",fill:"#969FA8",marginTop:-1}}),variant:"regular",onClick:()=>{h((0,O.Hk)("Path copied to clipboard"))},style:{width:"28px",height:"28px",color:"#969FA8",border:"#969FA8 1px solid",marginRight:5}})}),(0,y.jsx)(x.azJ,{className:"additionalOptions",children:u})]}),children:z}),!i&&(0,y.jsx)(x.m_M,{tooltip:P?"Choose or create a new path":(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"create a new path"),children:(0,y.jsx)(x.$nd,{id:"new-path",onClick:()=>{w(!0)},disabled:!f&&(p||!P),icon:(0,y.jsx)(x.pj3,{style:{fill:"#969FA8"}}),style:{whiteSpace:"nowrap"},variant:"regular",label:"Create new path"})})]}),(0,y.jsx)(x.azJ,{sx:{display:"none",marginTop:15,marginBottom:5,justifyContent:"flex-start","& > div":{fontSize:12,fontWeight:"normal",flexDirection:"row",flexWrap:"nowrap"},["@media (max-width: ".concat(x.nmC.lg,"px)")]:{display:"flex"}},children:u})]})};var A=n(93445);const I=e=>"Enabled"===e||"Suspended"===e;var k=n(37414),B=n(39947),F=n(81708),L=n(6681);const V=e=>{let{uploadPath:t,bucketName:n,forceDisable:a=!1,uploadFileFunction:i,uploadFolderFunction:l,overrideStyles:c={}}=e;const[d,u]=(0,s.useState)(null),[h,m]=(0,s.useState)(!1),p=(0,o.d4)((e=>e.system.anonymousMode)),j=(0,o.d4)((e=>e.console.session&&e.console.session.permissions||{})),b=[r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],g=T(j,t,b),f=Boolean(d),v=()=>{u(null)},S=(0,_._)([t,...g],b)||p,O=(0,_._)([n,...g],b,!1,!0),w=S||O;return(0,y.jsxs)(s.Fragment,{children:[(0,y.jsx)(L.A,{tooltip:w?"Upload Files":(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload files to this bucket"),children:(0,y.jsx)(x.$nd,{id:"upload-main","aria-controls":"upload-main-menu","aria-haspopup":"true","aria-expanded":f?"true":void 0,onClick:e=>{m(!h),u(e.currentTarget)},label:"Upload",icon:(0,y.jsx)(x.JMY,{}),variant:"callAction",disabled:a||!w,sx:c})}),(0,y.jsx)(x.Vey,{id:"upload-main-menu",options:[{label:"Upload File",icon:(0,y.jsx)(x.JMY,{}),value:"file",disabled:!S||a},{label:"Upload Folder",icon:(0,y.jsx)(x.nDF,{}),value:"folder",disabled:!O||a}],selectedOption:"",onSelect:e=>{"folder"!==e?i(v):l(v)},hideTriggerAction:()=>{m(!1)},open:h,anchorEl:d,anchorOrigin:"end",useAnchorWidth:!0})]})},D=e=>{let{open:t,closePanel:n,className:s="",children:o}=e;return(0,y.jsxs)(x.azJ,{id:"details-panel",sx:{borderColor:"#EAEDEE",borderWidth:0,borderStyle:"solid",borderRadius:3,borderBottomLeftRadius:0,borderBottomRightRadius:0,width:0,transitionDuration:"0.3s",overflowX:"hidden",overflowY:"auto",position:"relative",opacity:0,marginLeft:-1,"&.open":{width:300,minWidth:300,borderLeftWidth:1,opacity:1},"@media (max-width: 799px)":{"&.open":{width:"100%",minWidth:"100%",borderLeftWidth:0}}},className:"".concat(t?"open":""," ").concat(s),children:[(0,y.jsx)(x.$nd,{variant:"text",id:"close-details-list",onClick:n,icon:(0,y.jsx)(x._FR,{}),sx:{position:"absolute",right:5,top:18,padding:0,height:14,"&:hover:not(:disabled)":{backgroundColor:"transparent"}}}),o]})};var P=n(48245);const R=e=>{let{icon:t,strings:n}=e;return(0,y.jsxs)(x.azJ,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:16,height:16,marginRight:4,minWidth:16,minHeight:16},"& .fileNameText":{whiteSpace:"pre",overflow:"hidden",textOverflow:"ellipsis"}},children:[t,(0,y.jsx)("span",{className:"fileNameText",children:(0,c.qf)(n[n.length-1])})]})},U=[{icon:(0,y.jsx)(x.FRZ,{}),extensions:["mp4","mov","avi","mpeg","mpg"]},{icon:(0,y.jsx)(x.jCy,{}),extensions:["mp3","m4a","aac"]},{icon:(0,y.jsx)(x.yTC,{}),extensions:["pdf"]},{icon:(0,y.jsx)(x.QvW,{}),extensions:["ppt","pptx"]},{icon:(0,y.jsx)(x.z9t,{}),extensions:["xls","xlsx"]},{icon:(0,y.jsx)(x.VSs,{}),extensions:["cer","crt","pem"]},{icon:(0,y.jsx)(x.bM2,{}),extensions:["html","xml","css","py","go","php","cpp","h","java"]},{icon:(0,y.jsx)(x.qM2,{}),extensions:["cfg","yaml"]},{icon:(0,y.jsx)(x.ITz,{}),extensions:["sql"]},{icon:(0,y.jsx)(x.PcO,{}),extensions:["ttf","otf"]},{icon:(0,y.jsx)(x.yEV,{}),extensions:["doc","docx","txt","rtf"]},{icon:(0,y.jsx)(x.j_m,{}),extensions:["zip","rar","tar","gz"]},{icon:(0,y.jsx)(x.DUd,{}),extensions:["epub","mobi","azw","azw3"]},{icon:(0,y.jsx)(x.nLN,{}),extensions:["jpeg","jpg","gif","tiff","png","heic","dng"]}],z=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e,s=(0,y.jsx)(x.KlI,{});e.endsWith("/")&&(s=(0,y.jsx)(x.kez,{}),n=e.slice(0,-1));const o=e.toLowerCase();for(const i of U)for(const e of i.extensions)o.endsWith(".".concat(e))&&(s=i.icon);!e.endsWith("/")&&e.indexOf(".")<0&&(s=(0,y.jsx)(x.YJK,{}));const a=n.split("/");return t?s:(0,y.jsx)(R,{icon:s,strings:a})};var G=n(37524);const M=e=>{let{metaData:t}=e;const n=Object.keys(t);return(0,y.jsx)(s.Fragment,{children:n.map(((e,n)=>{const s=(e=>Array.isArray(e)?e.map(c.Tw).join(", "):(0,c.Tw)(e))(t[e]);return(0,y.jsxs)(x.azJ,{sx:{marginBottom:15,fontSize:14,maxHeight:180,overflowY:"auto"},children:[(0,y.jsx)("strong",{children:e}),(0,y.jsx)("br",{}),s]},"box-meta-".concat(e,"-").concat(n.toString()))}))})};var J=n(30718),K=n(85330),W=n(77403);const H=[{value:"01",label:"January"},{value:"02",label:"February"},{value:"03",label:"March"},{value:"04",label:"April"},{value:"05",label:"May"},{value:"06",label:"June"},{value:"07",label:"July"},{value:"08",label:"August"},{value:"09",label:"September"},{value:"10",label:"October"},{value:"11",label:"November"},{value:"12",label:"December"}],Y=Array.from(Array(31),((e,t)=>({value:(t+1).toString(),label:(t+1).toString()}))),$=(new Date).getFullYear(),Z=Array.from(Array(50),((e,t)=>({value:(t+$).toString(),label:(t+$).toString()})));var q=n(94141);const Q=(0,s.forwardRef)(((e,t)=>{let{id:n,label:o,disableOptions:a=!1,tooltip:i="",borderBottom:l=!1,onDateChange:r,value:c=""}=e;(0,s.useImperativeHandle)(t,(()=>({resetDate:b})));const[d,u]=(0,s.useState)(""),[h,m]=(0,s.useState)(""),[p,j]=(0,s.useState)("");(0,s.useEffect)((()=>{if(""!==c){const e=c.split("-");j(e[0]),u(e[1]),m("".concat(parseInt(e[2])))}}),[c]),(0,s.useEffect)((()=>{const[e,t]=((e,t,n)=>{const s=Date.parse("".concat(e,"-").concat(t,"-").concat(n));if(isNaN(s))return[!1,""];const o=parseInt(t),a=parseInt(n),i=o<10?"0".concat(o):o,l=a<10?"0".concat(a):a,r=new Date(s).toISOString().split("T")[0],c="".concat(e,"-").concat(i,"-").concat(l);return[r===c,c]})(p,d,h);r(t,e)}),[d,h,p,r]);const b=()=>{u(""),m(""),j("")},g=()=>a||!1,f=[{value:"",label:""},...H],v=[{value:"",label:""},...Y],_=[{value:"",label:""},...Z];return(0,y.jsxs)(x.azJ,{className:"inputItem",children:[(0,y.jsx)(x.azJ,{sx:{display:"flex",alignItems:"center",gap:5,marginBottom:5},children:(0,y.jsxs)(x.l1Y,{htmlFor:n,children:[(0,y.jsx)("span",{children:o}),""!==i&&(0,y.jsx)(x.azJ,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,y.jsx)(x.m_M,{tooltip:i,placement:"top",children:(0,y.jsx)(x.azJ,{sx:{"& .min-icon":{width:13}},children:(0,y.jsx)(x.NTw,{})})})})]})}),(0,y.jsxs)(x.azJ,{sx:{display:"flex",gap:12},children:[(0,y.jsx)(x.l6P,{id:"".concat(n,"-month"),name:"".concat(n,"-month"),value:d,onChange:e=>{u(e)},options:f,label:"",disabled:g()}),(0,y.jsx)(x.l6P,{id:"".concat(n,"-day"),name:"".concat(n,"-day"),value:h,onChange:e=>{m(e)},options:v,label:"",disabled:g()}),(0,y.jsx)(x.l6P,{id:"".concat(n,"-year"),name:"".concat(n,"-year"),value:p,onChange:e=>{j(e)},options:_,label:"",disabled:g(),sx:{marginBottom:12}})]})]})})),X=e=>{let{open:t,closeModalAndRefresh:n,objectName:a,objectInfo:r,bucketName:d}=e;const u=(0,l.jL)(),h=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),[p,j]=(0,s.useState)(!0),[b,g]=(0,s.useState)(""),[f,v]=(0,s.useState)(""),[_,S]=(0,s.useState)(!1),[w,T]=(0,s.useState)(!1),[C,E]=(0,s.useState)(!1);(0,s.useEffect)((()=>{if(r.retention_mode&&(g((null===h||void 0===h?void 0:h.mode)||K.BT.Governance),E(!0)),r.retention_until_date){const t=new Date(r.retention_until_date);if("Invalid Date"!==t.toString()){const n=t.getFullYear(),s=(e=t.getMonth()+1)<10?"0".concat(e):"".concat(e),o=t.getDate();isNaN(o)||"NaN"===s||isNaN(n)||v("".concat(n,"-").concat(s,"-").concat(o))}E(!0)}var e}),[r,null===h||void 0===h?void 0:h.mode]);const N=(0,s.useRef)(null),A=()=>{j(!1),g(K.BT.Governance),N.current&&N.current.resetDate()},I=C&&("governance"===b||""===b);return(0,y.jsx)(q.A,{title:"Set Retention Policy",modalOpen:t,onClose:()=>{A(),n(!1)},children:(0,y.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault()})(e)},children:(0,y.jsxs)(x.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,y.jsxs)(x.azJ,{className:"inputItem",children:[(0,y.jsx)("strong",{children:"Selected Object"}),": ",a]}),I&&(0,y.jsx)(x.dOG,{value:"status",id:"status",name:"status",checked:p,onChange:e=>{j(!p)},label:"Status",indicatorLabels:["Enabled","Disabled"]}),(0,y.jsx)(x.z6M,{currentValue:b,id:"type",name:"type",label:"Type",disableOptions:!p||C&&""!==b,onChange:e=>{g(e.target.value)},selectorOptions:[{label:"Governance",value:K.BT.Governance},{label:"Compliance",value:K.BT.Compliance}]}),(0,y.jsx)(Q,{id:"date",label:"Date",disableOptions:!(p&&("governance"===b||"compliance"===b)),ref:N,value:f,borderBottom:!0,onDateChange:(e,t)=>{S(t),t&&v(e)}}),(0,y.jsxs)(x.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:[(0,y.jsx)(x.$nd,{id:"reset",type:"button",variant:"regular",onClick:A,label:"Reset"}),(0,y.jsx)(x.$nd,{id:"save",type:"submit",variant:"callAction",disabled:p&&""===b||p&&!_||w,onClick:()=>{T(!0);const e=r.name||"",t=r.version_id||null,s=p||"governance"!==b?"".concat(f,"T23:59:59Z"):"";p||"governance"!==b?((e,t,s)=>{i.F.buckets.putObjectRetention(d,{prefix:(0,c.nf)(e),version_id:t||""},{expires:s,mode:b}).then((()=>{T(!1),n(!0)})).catch((e=>{u((0,O.Dy)((0,m.S)(e.error))),T(!1)}))})(e,t,s):((e,t)=>{i.F.buckets.deleteObjectRetention(d,{prefix:(0,c.nf)(e),version_id:t||""}).then((()=>{T(!1),n(!0)})).catch((e=>{u((0,O.Dy)((0,m.S)(e.error))),T(!1)}))})(e,t)},label:"Save"})]})]})})})};var ee=n(58661),te=n(25448);const ne=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedBucket:a,selectedObject:i,versioningInfo:d,selectedVersion:u=""}=e;const h=(0,l.jL)(),[m,p]=(0,te.A)((()=>t(!0)),(e=>{h((0,O.C9)(e)),"Access Denied."===e.detailedError&&t(!0)})),[j,b]=(0,s.useState)(!1),[g,f]=(0,s.useState)(!1),v=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),S=(0,_._)([a],[r.OV.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===v||void 0===v?void 0:v.mode);if(!i)return null;return(0,y.jsx)(ee.A,{title:"Delete Object",confirmText:"Delete",isOpen:n,titleIcon:(0,y.jsx)(x.xWY,{}),isLoading:m,onConfirm:()=>{const e=(0,c.x6)(i).endsWith("/");p("DELETE","/api/v1/buckets/".concat(a,"/objects?prefix=").concat(i).concat(""!==u?"&version_id=".concat(u):"&recursive=".concat(e,"&all_versions=").concat(j)).concat(g?"&bypass=true":""))},onClose:()=>t(!1),confirmationContent:(0,y.jsxs)(s.Fragment,{children:["Are you sure you want to delete: ",(0,y.jsx)("br",{}),(0,y.jsx)("b",{children:(0,c.x6)(i)})," ",""!==u?(0,y.jsxs)(s.Fragment,{children:[(0,y.jsx)("br",{}),(0,y.jsx)("br",{}),"Version ID:",(0,y.jsx)("br",{}),(0,y.jsx)("strong",{children:u})]}):"","? ",(0,y.jsx)("br",{}),(0,y.jsx)("br",{}),I(null===d||void 0===d?void 0:d.status)&&""===u&&(0,y.jsx)(s.Fragment,{children:(0,y.jsx)(x.dOG,{label:"Delete All Versions",indicatorLabels:["Yes","No"],checked:j,value:"delete_versions",id:"delete-versions",name:"delete-versions",onChange:e=>{b(!j)},description:""})}),S&&(j||""!==u)&&(0,y.jsx)(s.Fragment,{children:(0,y.jsx)("div",{style:{marginTop:10},children:(0,y.jsx)(x.dOG,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:g,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:e=>{f(!g)},description:""})})}),j&&(0,y.jsxs)(s.Fragment,{children:[(0,y.jsxs)("div",{style:{marginTop:10,border:"#c83b51 1px solid",borderRadius:3,padding:5,backgroundColor:"#c83b5120",color:"#c83b51"},children:["This will remove the object as well as all of its versions,"," ",(0,y.jsx)("br",{}),"This action is irreversible."]}),(0,y.jsx)("br",{}),"Are you sure you want to continue?"]})]})})},se=e=>{let{open:t,closeModalAndRefresh:n,objectName:o,bucketName:a,actualInfo:r}=e;const d=(0,l.jL)(),[u,p]=(0,s.useState)(!1),[j,b]=(0,s.useState)(!1),g=r.version_id;(0,s.useEffect)((()=>{const e=h()(r,"legal_hold_status","OFF");p("ON"===e)}),[r]);const f=()=>{p(!1)};return(0,y.jsx)(q.A,{title:"Set Legal Hold",modalOpen:t,onClose:()=>{f(),n(!1)},children:(0,y.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault(),b(!0),i.F.buckets.putObjectLegalHold(a,{prefix:(0,c.nf)(o),version_id:g||""},{status:u?K.SW.Enabled:K.SW.Disabled}).then((()=>{b(!1),n(!0)})).catch((e=>{d((0,O.Dy)((0,m.S)(e.error))),b(!1)}))})(e)},children:(0,y.jsxs)(x.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,y.jsxs)(x.azJ,{className:"inputItem",children:[(0,y.jsx)("strong",{children:"Object"}),": ",a]}),(0,y.jsx)(x.dOG,{value:"legalhold",id:"legalhold",name:"legalhold",checked:u,onChange:e=>{p(!u)},label:"Legal Hold Status",indicatorLabels:["Enabled","Disabled"],tooltip:"To enable this feature you need to enable versioning on the bucket before creation"}),(0,y.jsxs)(x.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:[(0,y.jsx)(x.$nd,{id:"clear",type:"button",variant:"regular",onClick:f,label:"Clear"}),(0,y.jsx)(x.$nd,{id:"save",type:"submit",variant:"callAction",disabled:j,label:" Save"})]})]})})})},oe=f.Ay.b((e=>{let{theme:t}=e;return{color:h()(t,"signalColors.danger","#C83B51"),marginLeft:5}})),ae=e=>{var t;let{modalOpen:n,onCloseAndUpdate:a,bucketName:d,actualInfo:u}=e;const p=(0,l.jL)(),j=(0,o.d4)(O.Rq),[b,g]=(0,s.useState)(""),[f,v]=(0,s.useState)(""),[S,w]=(0,s.useState)(!1),[T,C]=(0,s.useState)(!1),[E,N]=(0,s.useState)(""),[A,I]=(0,s.useState)(""),k=(0,c.nf)(u.name||""),B=u.tags,F=Object.keys(B||{}),L=null===(t=u.name)||void 0===t?void 0:t.split("/"),V=(null===L||void 0===L?void 0:L.pop())||"",D=e=>(0,y.jsxs)(x.azJ,{sx:{fontSize:16,margin:"20px 0 30px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",width:"100%"},children:["Tag",e?"s":""," for: ",(0,y.jsx)("strong",{children:V})]});return(0,y.jsx)(s.Fragment,{children:(0,y.jsx)(q.A,{modalOpen:n,title:T?"Delete Tag":"Edit Tags",onClose:()=>{a(!0)},iconColor:T?"delete":"default",titleIcon:T?(0,y.jsx)(x.aaC,{}):(0,y.jsx)(x.cGQ,{}),children:T?(0,y.jsx)(s.Fragment,{children:(0,y.jsxs)(x.xA9,{container:!0,children:[D(!1),"Are you sure you want to delete the tag"," ",(0,y.jsxs)(oe,{children:[E," : ",A]})," ","?",(0,y.jsxs)(x.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:[(0,y.jsx)(x.$nd,{id:"cancel",type:"button",variant:"regular",onClick:()=>{N(""),I(""),C(!1)},label:"Cancel"}),(0,y.jsx)(x.$nd,{type:"submit",variant:"secondary",onClick:()=>{const e={...B};delete e[E];const t=j?u.version_id||"":"null";i.F.buckets.putObjectTags(d,{prefix:k,version_id:t},{tags:e}).then((()=>{a(!0),w(!1)})).catch((e=>{p((0,O.Dy)((0,m.S)(e.error))),w(!1)}))},id:"deleteTag",label:"Delete Tag"})]})]})}):(0,y.jsxs)(x.azJ,{children:[(0,y.jsx)(_.R,{scopes:[r.OV.S3_GET_OBJECT_TAGGING,r.OV.S3_GET_ACTIONS],resource:d,children:(0,y.jsxs)(x.azJ,{sx:{display:"flex",flexFlow:"column",width:"100%"},children:[D(!0),(0,y.jsxs)(x.azJ,{sx:{fontSize:14,fontWeight:"normal"},children:["Current Tags:",(0,y.jsx)("br",{}),0===F.length?(0,y.jsx)("span",{className:"muted",children:"There are no tags for this object"}):(0,y.jsx)(s.Fragment,{}),(0,y.jsx)(x.azJ,{sx:{marginTop:"5px",marginBottom:"15px"},children:F.map(((e,t)=>{const n=h()(B,"".concat(e),"");return""!==n?(0,y.jsx)(_.R,{scopes:[r.OV.S3_DELETE_OBJECT_TAGGING],resource:d,errorProps:{deleteIcon:null,onDelete:null},children:(0,y.jsx)(x.vwO,{id:"".concat(e," : ").concat(n),label:"".concat(e," : ").concat(n),variant:"regular",color:"default",onDelete:()=>{((e,t)=>{N(e),I(t),C(!0)})(e,n)}})},"chip-".concat(t)):null}))})]})]})}),(0,y.jsx)(_.R,{scopes:[r.OV.S3_PUT_OBJECT_TAGGING,r.OV.S3_PUT_ACTIONS],resource:d,errorProps:{disabled:!0,onClick:null},children:(0,y.jsxs)(x.azJ,{children:[(0,y.jsx)(x._xt,{icon:(0,y.jsx)(x.b_$,{}),separator:!1,children:"Add New Tag"}),(0,y.jsxs)(x.Hbc,{containerPadding:!1,withBorders:!1,children:[(0,y.jsx)(x.cl_,{value:b,label:"Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter Tag Key",onChange:e=>{g(e.target.value)}}),(0,y.jsx)(x.cl_,{value:f,label:"Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter Tag Label",onChange:e=>{v(e.target.value)}}),(0,y.jsxs)(x.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:[(0,y.jsx)(x.$nd,{id:"clear",type:"button",variant:"regular",color:"primary",onClick:()=>{v(""),g("")},label:"Clear"}),(0,y.jsx)(x.$nd,{type:"submit",variant:"callAction",disabled:""===f.trim()||""===b.trim()||S,onClick:()=>{w(!0);const e={};e[b]=f;const t={...B,...e},n=j?u.version_id||"":"null";i.F.buckets.putObjectTags(d,{prefix:k,version_id:n},{tags:t}).then((()=>{a(!0),w(!1)})).catch((e=>{p((0,O.Dy)((0,m.S)(e.error))),w(!1)}))},id:"saveTag",label:"Save"})]})]})]})})]})})})};var ie=n(49501);const le=e=>{let{closeInspectModalAndRefresh:t,inspectOpen:n,inspectPath:o,volumeName:a}=e;const i=(0,l.jL)(),r=()=>t(!1),[d,u]=(0,s.useState)(!0),[h,m]=(0,s.useState)(""),[p,j]=(0,s.useState)("");if(!o)return null;return(0,y.jsxs)(s.Fragment,{children:[!h&&(0,y.jsx)(q.A,{modalOpen:n,titleIcon:(0,y.jsx)(x.nTF,{}),title:"Inspect Object",onClose:r,children:(0,y.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault()})(e)},children:["Would you like to encrypt ",(0,y.jsx)("b",{children:(0,c.x6)(o)}),"?"," ",(0,y.jsx)("br",{}),(0,y.jsx)(x.dOG,{label:"Encrypt",indicatorLabels:["Yes","No"],checked:d,value:"encrypt",id:"encrypt",name:"encrypt",onChange:e=>{u(!d)},description:""}),(0,y.jsx)(x.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:(0,y.jsx)(x.$nd,{id:"inspect",type:"submit",variant:"callAction",color:"primary",onClick:async()=>{const e=(0,c.nf)(o+"/xl.meta"),t=(0,c.nf)(a);let n=document.baseURI.replace(window.location.origin,"");(async e=>await fetch(e,{method:"GET"}))("".concat(window.location.origin).concat(n,"/api/v1/admin/inspect?volume=").concat(t,"&file=").concat(e,"&encrypt=").concat(d)).then((async e=>{if(!e.ok){const t=await e.json();i((0,O.C9)({errorMessage:t.message,detailedError:t.code}))}const t=await e.blob(),n=e.headers.get("content-disposition").split('"')[1],s=(0,c.UM)(n)||"";(0,c.OT)(t,n),j(n),""!==s?m(s):r()})).catch((e=>{i((0,O.C9)(e))}))},label:"Inspect"})})]})}),h?(0,y.jsxs)(q.A,{modalOpen:n,title:"Inspect Decryption Key",onClose:()=>{(0,c.Yj)(p),r(),m("")},titleIcon:(0,y.jsx)(x.aJN,{}),children:[(0,y.jsxs)(x.azJ,{children:["This will be displayed only once. It cannot be recovered.",(0,y.jsx)("br",{}),"Use secure medium to share this key."]}),(0,y.jsx)(x.azJ,{children:(0,y.jsx)(ie.A,{value:h})})]}):null]})},re=e=>{let{open:t,closeModal:n,currentItem:o,internalPaths:a,actualInfo:i,bucketName:r}=e;const c=(0,l.jL)(),[d,u]=(0,s.useState)(o),[h,m]=(0,s.useState)(!1);return(0,y.jsxs)(q.A,{title:"Rename Download",modalOpen:t,onClose:n,titleIcon:(0,y.jsx)(x.qUP,{}),children:[(0,y.jsxs)("div",{children:["The file you are trying to download has a long name.",(0,y.jsx)("br",{}),"This can cause issues on Windows Systems by trimming the file name after download.",(0,y.jsx)("br",{}),(0,y.jsx)("br",{})," We recommend to rename the file download"]}),(0,y.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault(),(0,P._)(c,r,a,i),n()})(e)},children:(0,y.jsxs)(x.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,y.jsx)(x.cl_,{id:"download-filename",name:"download-filename",onChange:e=>{u(e.target.value)},label:"",type:"text",value:d,error:d.length>200&&!h?"Filename should be less than 200 characters long.":""}),(0,y.jsx)(x.dOG,{value:"acceptLongName",id:"acceptLongName",name:"acceptLongName",checked:h,onChange:e=>{m(e.target.checked),e.target.checked&&u(o)},label:"Use Original Name"}),(0,y.jsx)(x.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:(0,y.jsx)(x.$nd,{id:"download-file",type:"submit",variant:"callAction",color:"primary",disabled:d.length>200&&!h,label:"Download File"})})]})})]})},ce={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:0,tags:{},version_id:void 0},de=e=>{let{internalPaths:t,bucketName:n,versioningInfo:a,locking:u,onClosePanel:m}=e;const p=(0,l.jL)(),j=(0,o.d4)(O.Rq),b=(0,o.d4)((e=>e.objectBrowser.versionsMode)),g=(0,o.d4)((e=>e.objectBrowser.selectedVersion)),f=(0,o.d4)((e=>e.objectBrowser.loadingObjectInfo)),[v,S]=(0,s.useState)(!1),[w,T]=(0,s.useState)(!1),[C,E]=(0,s.useState)(!1),[N,I]=(0,s.useState)(!1),[k,B]=(0,s.useState)(!1),[F,V]=(0,s.useState)(null),[D,R]=(0,s.useState)([]),[U,K]=(0,s.useState)(null),[W,H]=(0,s.useState)([]),[Y,$]=(0,s.useState)(!1),[Z,q]=(0,s.useState)(!1),[Q,ee]=(0,s.useState)(0),[te,oe]=(0,s.useState)(!1),[ie,de]=(0,s.useState)(null),[ue,he]=(0,s.useState)(!1),xe=((0,c.x6)(t)||"").split("/").pop()||"";let me=[];F&&F.name&&(me=F.name.split("/")),(0,s.useEffect)((()=>{if(j&&D&&D.length>=1){let e=D.find((e=>e.is_latest))||ce;""!==g&&(e=D.find((e=>e.version_id===g))||ce),e.is_delete_marker||he(!0),V(e)}}),[g,j,D]),(0,s.useEffect)((()=>{f&&""!==t&&i.F.buckets.listObjects(n,{prefix:t,with_versions:j}).then((e=>{const t=e.data.objects||[];if(j){R(t),H(t);const e=t.reduce(((e,t)=>null!==t&&void 0!==t&&t.size?e+t.size:e),0);ee(e)}else{const e=t[0];V(e),H([]),e.is_delete_marker||he(!0)}p((0,d.oe)(!1))})).catch((e=>{console.error("Error loading object details",e.error),p((0,d.oe)(!1))}))}),[f,n,t,p,j,g]),(0,s.useEffect)((()=>{ue&&""!==t&&i.F.buckets.getObjectMetadata(n,{prefix:t,versionID:(null===F||void 0===F?void 0:F.version_id)||""}).then((e=>{let t=h()(e.data,"objectMetadata",{});de(t),he(!1)})).catch((e=>{console.error("Error Getting Metadata Status: ",e.detailedError),he(!1)}))}),[n,t,ue,null===F||void 0===F?void 0:F.version_id]);let pe=[];F&&F.tags&&(pe=Object.keys(F.tags));const je=(0,y.jsx)("div",{style:{textAlign:"center",marginTop:35},children:(0,y.jsx)(x.aHM,{})});if(!F)return f?je:null;const be=me.length>0?me[me.length-1]:F.name,ge=[n,xe,[n,F.name].join("/")],fe=(0,_._)(n,[r.OV.S3_PUT_OBJECT_LEGAL_HOLD,r.OV.S3_PUT_ACTIONS]),ve=(0,_._)(ge,[r.OV.S3_PUT_OBJECT_TAGGING,r.OV.S3_PUT_ACTIONS]),_e=(0,_._)(ge,[r.OV.S3_GET_OBJECT_RETENTION,r.OV.S3_PUT_OBJECT_RETENTION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],!0),Se=(0,_._)(ge,[r.OV.ADMIN_INSPECT_DATA]),Oe=(0,_._)(ge,[r.OV.S3_GET_BUCKET_VERSIONING,r.OV.S3_PUT_BUCKET_VERSIONING,r.OV.S3_GET_OBJECT_VERSION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS]),we=(0,_._)(ge,[r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS]),Te=(0,_._)([n,xe,[n,F.name].join("/")],[r.OV.S3_DELETE_OBJECT]);let ye=(0,A.IZ)(ie,xe);const Ce=[{action:()=>{(0,P._)(p,n,t,F)},label:"Download",disabled:!!F.is_delete_marker||!we,icon:(0,y.jsx)(x.s3U,{}),tooltip:we?"Download this Object":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"download this object")},{action:()=>{S(!0)},label:"Share",disabled:!!F.is_delete_marker||!we,icon:(0,y.jsx)(x.liv,{}),tooltip:we?"Share this File":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"share this object")},{action:()=>{q(!0)},label:"Preview",disabled:!!F.is_delete_marker||"none"===ye&&!we,icon:(0,y.jsx)(x.cyn,{}),tooltip:we?"Preview this File":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"preview this object")},{action:()=>{I(!0)},label:"Legal Hold",disabled:!u||!j||!!F.is_delete_marker||!fe||""!==g,icon:(0,y.jsx)(x.ODz,{}),tooltip:fe?u?"Change Legal Hold rules for this File":"Object Locking must be enabled on this bucket in order to set Legal Hold":(0,r.vj)([r.OV.S3_PUT_OBJECT_LEGAL_HOLD,r.OV.S3_PUT_ACTIONS],"change legal hold settings for this object")},{action:()=>{T(!0)},label:"Retention",disabled:!j||!!F.is_delete_marker||!_e||""!==g||!u,icon:(0,y.jsx)(x.gn6,{}),tooltip:_e?u?"Change Retention rules for this File":"Object Locking must be enabled on this bucket in order to set Retention Rules":(0,r.vj)([r.OV.S3_GET_OBJECT_RETENTION,r.OV.S3_PUT_OBJECT_RETENTION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],"change Retention Rules for this object")},{action:()=>{E(!0)},label:"Tags",disabled:!!F.is_delete_marker||""!==g||!ve,icon:(0,y.jsx)(x.P3Z,{}),tooltip:ve?"Change Tags for this File":(0,r.vj)([r.OV.S3_PUT_OBJECT_TAGGING,r.OV.S3_GET_OBJECT_TAGGING,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],"set Tags on this object")},{action:()=>{B(!0)},label:"Inspect",disabled:!j||!!F.is_delete_marker||""!==g||!Se,icon:(0,y.jsx)(x.nTF,{}),tooltip:Se?"Inspect this file":(0,r.vj)([r.OV.ADMIN_INSPECT_DATA],"inspect this file")},{action:()=>{p((0,d.cQ)({status:!b,objectName:be}))},label:b?"Hide Object Versions":"Display Object Versions",icon:(0,y.jsx)(x.j1U,{}),disabled:!j||!(F.version_id&&"null"!==F.version_id)||!Oe,tooltip:Oe?F.version_id&&"null"!==F.version_id?"Display Versions for this file":"":(0,r.vj)([r.OV.S3_GET_BUCKET_VERSIONING,r.OV.S3_PUT_BUCKET_VERSIONING,r.OV.S3_GET_OBJECT_VERSION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],"display all versions of this object")}];return(0,y.jsxs)(s.Fragment,{children:[v&&F&&(0,y.jsx)(J.default,{open:v,closeModalAndRefresh:()=>{K(null),S(!1)},bucketName:n,dataObject:U||F}),w&&F&&(0,y.jsx)(X,{open:w,closeModalAndRefresh:e=>{T(!1),e&&p((0,d.oe)(!0))},objectName:xe,objectInfo:F,bucketName:n}),Y&&(0,y.jsx)(ne,{deleteOpen:Y,selectedBucket:n,selectedObject:t,closeDeleteModalAndRefresh:e=>{$(!1),e&&""===g?m(!0):(p((0,d.SK)(!0)),p((0,d.Ai)("")),p((0,d.oe)(!0)))},versioningInfo:j?a:void 0,selectedVersion:g}),N&&F&&(0,y.jsx)(se,{open:N,closeModalAndRefresh:e=>{I(!1),e&&p((0,d.oe)(!0))},objectName:F.name||"",bucketName:n,actualInfo:F}),Z&&F&&(0,y.jsx)(G.default,{open:Z,bucketName:n,actualInfo:F,onClosePreview:()=>{q(!1)}}),C&&F&&(0,y.jsx)(ae,{modalOpen:C,bucketName:n,actualInfo:F,onCloseAndUpdate:e=>{E(!1),e&&p((0,d.oe)(!0))}}),k&&F&&(0,y.jsx)(le,{inspectOpen:k,volumeName:n,inspectPath:F.name||"",closeInspectModalAndRefresh:e=>{B(!1),e&&p((0,d.oe)(!0))}}),te&&F&&(0,y.jsx)(re,{open:te,closeModal:()=>{oe(!1)},currentItem:xe,bucketName:n,internalPaths:t,actualInfo:F}),f?(0,y.jsx)(s.Fragment,{children:je}):(0,y.jsxs)(x.azJ,{sx:{"& .ObjectDetailsTitle":{display:"flex",alignItems:"center","& .min-icon":{width:26,height:26,minWidth:26,minHeight:26}},"& .objectNameContainer":{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",alignItems:"center",marginLeft:10},"& .capitalizeFirst":{textTransform:"capitalize"},"& .detailContainer":{padding:"0 22px",marginBottom:10,fontSize:14}},children:[(0,y.jsx)(x.Smc,{title:(0,y.jsxs)("div",{className:"ObjectDetailsTitle",children:[z(be||"",!0),(0,y.jsx)("span",{className:"objectNameContainer",children:be})]}),items:Ce}),(0,y.jsx)(L.A,{tooltip:Te?"":(0,r.vj)([r.OV.S3_DELETE_OBJECT],"delete this object"),children:(0,y.jsx)(x.xA9,{item:!0,xs:12,sx:{justifyContent:"center",display:"flex"},children:(0,y.jsx)(_.R,{resource:[n,xe,[n,F.name].join("/")],scopes:[r.OV.S3_DELETE_OBJECT],errorProps:{disabled:!0},children:(0,y.jsx)(x.$nd,{id:"delete-element-click",icon:(0,y.jsx)(x.d7y,{}),iconLocation:"start",fullWidth:!0,variant:"secondary",onClick:()=>{$(!0)},disabled:""===g&&F.is_delete_marker,sx:{width:"calc(100% - 44px)",margin:"8px 0"},label:"Delete".concat(""!==g?" version":"")})})})}),(0,y.jsx)(x.kCK,{icon:(0,y.jsx)(x.Hch,{}),label:"Object Info"}),(0,y.jsxs)(x.azJ,{className:"detailContainer",children:[(0,y.jsx)("strong",{children:"Name:"}),(0,y.jsx)("br",{}),(0,y.jsx)("div",{style:{overflowWrap:"break-word"},children:be})]}),""!==g&&(0,y.jsxs)(x.azJ,{className:"detailContainer",children:[(0,y.jsx)("strong",{children:"Version ID:"}),(0,y.jsx)("br",{}),g]}),(0,y.jsxs)(x.azJ,{className:"detailContainer",children:[(0,y.jsx)("strong",{children:"Size:"}),(0,y.jsx)("br",{}),(0,c.nO)("".concat(F.size||"0"))]}),F.version_id&&"null"!==F.version_id&&""===g&&(0,y.jsxs)(x.azJ,{className:"detailContainer",children:[(0,y.jsx)("strong",{children:"Versions:"}),(0,y.jsx)("br",{}),W.length," version",1!==W.length?"s":"",","," ",(0,c.qO)(Q)]}),""===g&&(0,y.jsxs)(x.azJ,{className:"detailContainer",children:[(0,y.jsx)("strong",{children:"Last Modified:"}),(0,y.jsx)("br",{}),(e=>{const t=new Date,n=new Date(e),s=t.getTime()-n.getTime(),o=(0,c.eQ)(s,"ms");return""!==o.trim()?"".concat(o," ago"):"Just now"})(F.last_modified||"")]}),(0,y.jsxs)(x.azJ,{className:"detailContainer",children:[(0,y.jsx)("strong",{children:"ETAG:"}),(0,y.jsx)("br",{}),F.etag||"N/A"]}),(0,y.jsxs)(x.azJ,{className:"detailContainer",children:[(0,y.jsx)("strong",{children:"Tags:"}),(0,y.jsx)("br",{}),0===pe.length?"N/A":pe.map(((e,t)=>(0,y.jsxs)("span",{children:[e,":",h()(F,"tags.".concat(e),""),t{let{versionToRestore:t,bucketName:n,objectPath:o,restoreOpen:a,onCloseAndUpdate:r}=e;const u=(0,l.jL)(),[h,p]=(0,s.useState)(!1);return(0,y.jsx)(ee.A,{title:"Restore File Version",confirmText:"Restore",isOpen:a,isLoading:h,titleIcon:(0,y.jsx)(x.YkU,{}),onConfirm:()=>{p(!0),i.F.buckets.putObjectRestore(n,{prefix:(0,c.nf)(o),version_id:t.version_id||""}).then((()=>{p(!1),r(!0),u((0,d.NV)({prefix:o,objectInfo:t}))})).catch((e=>{u((0,O.C9)((0,m.S)(e.error))),p(!1)}))},confirmButtonProps:{variant:"secondary",disabled:h},onClose:()=>{r(!1)},confirmationContent:(0,y.jsxs)(x.azJ,{id:"alert-dialog-description",children:["Are you sure you want to restore ",(0,y.jsx)("br",{}),(0,y.jsx)("b",{children:o})," ",(0,y.jsx)("br",{})," with Version ID:",(0,y.jsx)("br",{}),(0,y.jsx)("b",{children:t.version_id}),"?"]})})},he=e=>{let{type:t}=e,n="#000",s="";switch(t){case"null":n="#07193E",s="NULL VERSION";break;case"deleted":n="#868686",s="DELETED";break;default:n="#174551",s="CURRENT VERSION"}return(0,y.jsx)("span",{style:{backgroundColor:n,padding:"0 5px",display:"inline-block",color:"#FFF",fontWeight:"bold",fontSize:12,borderRadius:2,whiteSpace:"nowrap",margin:"0 10px"},children:s})},xe=f.Ay.div((e=>{let{theme:t}=e;return{"&:before":{content:"' '",display:"block",position:"absolute",width:"2px",height:"calc(100% + 2px)",backgroundColor:h()(t,"borderColor","#F8F8F8"),left:"24px"},"& .mainFileVersionItem":{borderBottom:"".concat(h()(t,"borderColor","#F8F8F8")," 1px solid"),padding:"1rem 0",margin:"0 0.5rem 0 2.5rem",cursor:"pointer","&.deleted":{color:"#868686"}},"& .intermediateLayer":{margin:"0 1.5rem 0 1.5rem","&:hover, &.selected":{backgroundColor:h()(t,"boxBackground","#F8F8F8"),"& > div":{borderBottomColor:h()(t,"boxBackground","#F8F8F8")}}},"& .versionContainer":{fontSize:16,fontWeight:"bold",display:"flex",alignItems:"center","& svg.min-icon":{width:18,height:18,minWidth:18,minHeight:18,marginRight:10}},"& .buttonContainer":{textAlign:"right","& button":{marginLeft:"1.5rem"}},"& .versionID":{fontSize:"12px",margin:"2px 0",whiteSpace:"nowrap",textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden"},"& .versionData":{marginRight:"10px",fontSize:12,color:"#868686"},"@media (max-width: 600px)":{"& .buttonContainer":{"& button":{marginLeft:"5px"}}},"@media (max-width: 799px)":{"&:before":{display:"none"},"& .mainFileVersionItem":{padding:"5px 0px",margin:0},"& .intermediateLayer":{margin:0,"&:hover, &.selected":{backgroundColor:"transparent","& > div":{borderBottomColor:h()(t,"boxBackground","#F8F8F8")}}},"& .versionContainer":{fontSize:14,"& svg.min-icon":{display:"none"}},"& .versionData":{textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden",whiteSpace:"nowrap"},"& .collapsableInfo":{display:"flex",flexDirection:"column"},"& .versionItem":{display:"none"}}}})),me=e=>{let{fileName:t,versionInfo:n,isSelected:s,checkable:o,isChecked:a,onCheck:i,onShare:l,onDownload:r,onRestore:d,onPreview:u,globalClick:h,index:m,key:p,style:b}=e;const g=n.is_delete_marker,f=[{icon:(0,y.jsx)(x.cyn,{}),action:u,tooltip:"Preview"},{icon:(0,y.jsx)(x.s3U,{}),action:r,tooltip:"Download this version"},{icon:(0,y.jsx)(x.liv,{}),action:l,tooltip:"Share this version"},{icon:(0,y.jsx)(x.YkU,{}),action:d,tooltip:"Restore this version"}];let v=null;n.is_delete_marker?v="deleted":n.is_latest?v="current":"null"===n.version_id&&(v="null");let _=j.c9.now();return n.last_modified&&(_=j.c9.fromISO(n.last_modified)),(0,y.jsx)(xe,{children:(0,y.jsx)(x.xA9,{container:!0,className:"ctrItem",onClick:()=>{h(n)},style:b,children:(0,y.jsx)(x.xA9,{item:!0,xs:12,className:"intermediateLayer".concat(" ",s?"selected":""),children:(0,y.jsxs)(x.xA9,{item:!0,xs:!0,className:"mainFileVersionItem ".concat(n.is_delete_marker?"deleted":""),children:[(0,y.jsx)(x.xA9,{item:!0,xs:12,children:(0,y.jsxs)(x.xA9,{container:!0,children:[(0,y.jsxs)(x.xA9,{item:!0,xs:!0,md:4,className:"versionContainer",children:[o&&(0,y.jsx)(x.Sc0,{checked:a,id:"select-".concat(n.version_id),name:"select-".concat(n.version_id),onChange:e=>{e.stopPropagation(),i(n.version_id||"")},value:n.version_id||"",disabled:n.is_delete_marker,sx:{width:"initial"}}),z(t,!0)," v",m.toString(),(0,y.jsx)("span",{className:"versionItem",children:v&&(0,y.jsx)(he,{type:v})})]}),(0,y.jsx)(x.xA9,{item:!0,xs:10,md:8,className:"buttonContainer",children:f.map(((e,t)=>(0,y.jsx)(x.m_M,{tooltip:e.tooltip,children:(0,y.jsx)(x.K0,{size:"small",id:"version-action-".concat(e.tooltip,"-").concat(t.toString()),className:"spacing".concat(" ",g?"buttonDisabled":""),disabled:g,onClick:t=>{t.stopPropagation(),g?t.preventDefault():e.action(n)},sx:{backgroundColor:"#F8F8F8",borderRadius:"100%",width:"28px",height:"28px",padding:"5px","& .min-icon":{width:"14px",height:"14px"}},children:e.icon})},"version-action-".concat(e.tooltip,"-").concat(t.toString()))))})]})}),(0,y.jsx)(x.xA9,{item:!0,xs:12,className:"versionID",children:"null"!==n.version_id?n.version_id:"-"}),(0,y.jsxs)(x.xA9,{item:!0,xs:12,className:"collapsableInfo",children:[(0,y.jsxs)("span",{className:"versionData",children:[(0,y.jsx)("strong",{children:"Last modified:"})," ",_.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)")]}),(0,y.jsxs)("span",{className:"versionData",children:[(0,y.jsx)("strong",{children:"Size:"})," ",(0,c.nO)("".concat(n.size||"0"))]})]})]})})},p)})},pe=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedBucket:a,selectedObject:d}=e;const u=(0,l.jL)(),[h,p]=(0,s.useState)(!1),[j,b]=(0,s.useState)(""),[g,f]=(0,s.useState)(!1),v=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),S=(0,_._)([a],[r.OV.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===v||void 0===v?void 0:v.mode);if((0,s.useEffect)((()=>{h&&i.F.buckets.deleteObject(a,{prefix:d,non_current_versions:!0,bypass:g}).then((()=>{t(!0)})).catch((e=>{u((0,O.C9)((0,m.S)(e.error))),p(!1)}))}),[h,t,u,d,a,g]),!d)return null;return(0,y.jsx)(ee.A,{title:"Delete Non-Current versions",confirmText:"Delete",isOpen:n,titleIcon:(0,y.jsx)(x.xWY,{}),isLoading:h,onConfirm:()=>{p(!0)},onClose:()=>t(!1),confirmButtonProps:{disabled:"YES, PROCEED"!==j||h},confirmationContent:(0,y.jsxs)(s.Fragment,{children:["Are you sure you want to delete all the non-current versions for:"," ",(0,y.jsx)("b",{children:(0,c.x6)(d)}),"? ",(0,y.jsx)("br",{}),S&&(0,y.jsx)(s.Fragment,{children:(0,y.jsx)("div",{style:{marginTop:10},children:(0,y.jsx)(x.dOG,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:g,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:e=>{f(!g)},description:""})})}),(0,y.jsx)("br",{}),"To continue please type ",(0,y.jsx)("b",{children:"YES, PROCEED"})," in the box.",(0,y.jsx)("br",{}),(0,y.jsx)("br",{}),(0,y.jsx)(x.xA9,{item:!0,xs:12,children:(0,y.jsx)(x.cl_,{id:"type-confirm",name:"retype-tenant",onChange:e=>{b(e.target.value)},label:"",value:j})})]})})},je=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedBucket:a,selectedVersions:c,selectedObject:d}=e;const u=(0,l.jL)(),[h,p]=(0,s.useState)(!1),[j,b]=(0,s.useState)(!1),g=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),f=(0,_._)([a],[r.OV.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===g||void 0===g?void 0:g.mode);return(0,s.useEffect)((()=>{if(h){const e=c.map((e=>({path:d,versionID:e,recursive:!1})));e.length>0&&i.F.buckets.deleteMultipleObjects(a,e,{all_versions:!1,bypass:j}).then((()=>{p(!1),t(!0)})).catch((e=>{u((0,O.C9)((0,m.S)(e.error))),p(!1)}))}}),[h,t,a,d,c,j,u]),c?(0,y.jsx)(ee.A,{title:"Delete Selected Versions",confirmText:"Delete",isOpen:n,titleIcon:(0,y.jsx)(x.xWY,{}),isLoading:h,onConfirm:()=>{p(!0)},onClose:()=>t(!1),confirmationContent:(0,y.jsxs)(s.Fragment,{children:["Are you sure you want to delete the selected ",c.length," ","versions for ",(0,y.jsx)("strong",{children:d}),"?",f&&(0,y.jsx)(s.Fragment,{children:(0,y.jsx)("div",{style:{marginTop:10},children:(0,y.jsx)(x.dOG,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:j,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:e=>{b(!j)},description:""})})})]})}):null};var be=n(95098);const ge={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:0,tags:{},version_id:void 0},fe=e=>{let{internalPaths:t,bucketName:n}=e;const a=(0,l.jL)(),r=(0,o.d4)((e=>e.objectBrowser.searchVersions)),u=(0,o.d4)((e=>e.objectBrowser.loadingVersions)),p=(0,o.d4)((e=>e.objectBrowser.selectedVersion)),j=(0,o.d4)(O.Rq),[b,g]=(0,s.useState)(!1),[f,v]=(0,s.useState)(null),[_,S]=(0,s.useState)(null),[w,T]=(0,s.useState)([]),[C,E]=(0,s.useState)(!1),[A,I]=(0,s.useState)(null),[k,B]=(0,s.useState)("date"),[F,V]=(0,s.useState)(!1),[D,R]=(0,s.useState)(!1),[U,z]=(0,s.useState)(!1),[M,K]=(0,s.useState)([]),[W,H]=(0,s.useState)(!1);let Y=[];f&&f.name&&(Y=f.name.split("/")),(0,s.useEffect)((()=>{u||f||a((0,d.SK)(!0))}),[u,f,a]),(0,s.useEffect)((()=>{u&&""!==t&&i.F.buckets.listObjects(n,{prefix:t,with_versions:j}).then((e=>{const n=h()(e.data,"objects",[]),s=(0,c.x6)(t),o=n.filter((e=>e.name===s));j?(v(o.find((e=>e.is_latest))||ge),T(o)):(v(o[0]),T([])),a((0,d.SK)(!1))})).catch((e=>{a((0,O.C9)((0,m.S)(e.error))),a((0,d.SK)(!1))}))}),[u,n,t,a,j]);const $=e=>{S(e),g(!0)},Z=e=>{S(e),V(!0)},q=e=>{I(e),E(!0)},Q=e=>{(0,P._)(a,n,t,e)},X=e=>{a((0,d.Ai)(e.version_id||""))},ee=w.filter((e=>!!e.version_id&&e.version_id.includes(r))),te=w.reduce(((e,t)=>t.size?e+t.size:e),0);ee.sort(((e,t)=>{if("size"===k)return e.size&&t.size?e.sizet.size?1:0:0;{const n=new Date(e.last_modified||"").getTime(),s=new Date(t.last_modified||"").getTime();return ns?-1:0}}));const ne=e=>{if(M.includes(e)){const t=M.filter((t=>t!==e));return void K(t)}const t=[...M];t.push(e),K(t)};return(0,y.jsxs)(s.Fragment,{children:[b&&f&&(0,y.jsx)(J.default,{open:b,closeModalAndRefresh:()=>{S(null),g(!1),V(!1)},bucketName:n,dataObject:_||f}),C&&f&&A&&(0,y.jsx)(ue,{restoreOpen:C,bucketName:n,versionToRestore:A,objectPath:f.name||"",onCloseAndUpdate:e=>{E(!1),I(null),e&&(a((0,d.SK)(!0)),a((0,d.oe)(!0)))}}),F&&f&&(0,y.jsx)(G.default,{open:F,bucketName:n,actualInfo:{name:f.name||"",version_id:_&&_.version_id?_.version_id:"null",size:_&&_.size?_.size:0,content_type:"",last_modified:f.last_modified||""},onClosePreview:()=>{V(!1)}}),D&&(0,y.jsx)(pe,{deleteOpen:D,closeDeleteModalAndRefresh:e=>{R(!1),e&&(a((0,d.SK)(!0)),a((0,d.Ai)("")),a((0,d.oe)(!0)))},selectedBucket:n,selectedObject:t}),W&&(0,y.jsx)(je,{selectedBucket:n,selectedObject:(0,c.x6)(t),deleteOpen:W,selectedVersions:M,closeDeleteModalAndRefresh:e=>{H(!1),e&&(a((0,d.SK)(!0)),a((0,d.Ai)("")),a((0,d.oe)(!0)),K([]))}}),(0,y.jsxs)(x.xA9,{container:!0,sx:{width:"100%",padding:10,"@media (max-width: 799px)":{minHeight:800}},children:[!f&&(0,y.jsx)(x.xA9,{item:!0,xs:12,children:(0,y.jsx)(x.z21,{})}),f&&(0,y.jsxs)(s.Fragment,{children:[(0,y.jsx)(x.xA9,{item:!0,xs:12,children:(0,y.jsx)(N,{bucketName:n,internalPaths:(0,c.x6)(t),hidePathButton:!0})}),(0,y.jsx)(x.xA9,{item:!0,xs:12,sx:{position:"relative","& .detailsSpacer":{marginRight:18,"@media (max-width: 600px)":{marginRight:0}},["@media (max-width: ".concat(x.nmC.md,"px)")]:{"&::before":{display:"none"}}},children:(0,y.jsx)(x.lcx,{icon:(0,y.jsx)("span",{style:{display:"block",marginTop:"-10px"},children:(0,y.jsx)(x.j1U,{style:{width:20,height:20}})}),title:"".concat(Y.length>0?Y[Y.length-1]:f.name," Versions"),subTitle:(0,y.jsxs)(s.Fragment,{children:[(0,y.jsx)("span",{className:"detailsSpacer",children:(0,y.jsxs)("strong",{children:[w.length," Version",1===w.length?"":"s","\xa0\xa0\xa0"]})}),(0,y.jsx)("span",{className:"detailsSpacer",children:(0,y.jsx)("strong",{children:(0,c.qO)(te)})})]}),actions:(0,y.jsxs)(s.Fragment,{children:[(0,y.jsx)(L.A,{tooltip:"Select Multiple Versions",children:(0,y.jsx)(x.$nd,{id:"select-multiple-versions",onClick:()=>{z(!U)},icon:(0,y.jsx)(x.IN,{}),variant:U?"callAction":"regular",style:{marginRight:8}})}),U&&(0,y.jsx)(L.A,{tooltip:"Delete Selected Versions",children:(0,y.jsx)(x.$nd,{id:"delete-multiple-versions",onClick:()=>{H(!0)},icon:(0,y.jsx)(x.d7y,{}),variant:"secondary",style:{marginRight:8},disabled:0===M.length})}),(0,y.jsx)(L.A,{tooltip:"Delete Non Current Versions",children:(0,y.jsx)(x.$nd,{id:"delete-non-current",onClick:()=>{R(!0)},icon:(0,y.jsx)(x.rgY,{}),variant:"secondary",style:{marginRight:15},disabled:w.length<=1})}),(0,y.jsx)(x.l6P,{id:"sort-by",options:[{label:"Date",value:"date"},{label:"Size",value:"size"}],value:k,label:"Sort by",onChange:e=>{B(e)},noLabelMinWidth:!0})]}),bottomBorder:!1})}),(0,y.jsx)(x.xA9,{item:!0,xs:12,sx:{flexGrow:1,height:"calc(100% - 120px)",overflow:"auto",["@media (max-width: ".concat(x.nmC.md,"px)")]:{height:600}},children:f.version_id&&"null"!==f.version_id&&(0,y.jsx)(be.B8,{style:{width:"100%"},containerStyle:{width:"100%",maxWidth:"100%"},width:1,height:800,rowCount:ee.length,rowHeight:108,rowRenderer:e=>{let{key:t,index:n,isScrolling:s,isVisible:o,style:a}=e;const i=w.length-n;return(0,y.jsx)(me,{style:a,fileName:(null===f||void 0===f?void 0:f.name)||"",versionInfo:ee[n],index:i,onDownload:Q,onRestore:q,onShare:$,onPreview:Z,globalClick:X,isSelected:p===ee[n].version_id,checkable:U,onCheck:ne,isChecked:M.includes(ee[n].version_id||"")},t)}})})]})]})]})},ve=e=>{if(e.name.endsWith("/"))return"";const t=j.c9.now(),n=j.c9.fromISO(e.last_modified);return t.hasSame(n,"day")&&t.hasSame(n,"month")&&t.hasSame(n,"year")?"Today, ".concat(n.toFormat("HH:mm")):n.toFormat("ccc, LLL dd yyyy HH:mm (ZZZZ)")},_e=e=>e.name.endsWith("/")||!e.size?"-":(0,c.nO)(String(e.size)),Se=[{label:"Name",elementKey:"name",renderFunction:z,enableSort:!0},{label:"Last Modified",elementKey:"last_modified",renderFunction:ve,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:_e,renderFullObject:!0,width:100,enableSort:!0}],Oe=[{label:"Name",elementKey:"name",renderFunction:z,enableSort:!0},{label:"Object Date",elementKey:"last_modified",renderFunction:ve,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:_e,renderFullObject:!0,width:100,enableSort:!0},{label:"Deleted",elementKey:"delete_flag",renderFunction:e=>e?"Yes":"No",width:60}];var we=n(46537);const Te=()=>{const e=(0,l.jL)(),t=(0,a.g)(),n=(0,a.Zp)(),[i,u]=(0,s.useState)("ASC"),[m,p]=(0,s.useState)("name"),j=t.bucketName||"",b=(0,o.d4)((e=>e.objectBrowser.objectDetailsOpen)),g=(0,o.d4)((e=>e.objectBrowser.requestInProgress)),f=(0,o.d4)(we.s$),v=!(null===f||void 0===f||!f.includes("object-browser-only")),S=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),O=(0,o.d4)((e=>e.objectBrowser.records)),w=(0,o.d4)((e=>e.objectBrowser.searchObjects)),T=(0,o.d4)((e=>e.objectBrowser.selectedObjects)),C=(0,o.d4)((e=>e.objectBrowser.connectionError)),E=(0,o.d4)((e=>e.system.anonymousMode)),N=(0,_._)(j,[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET]),I=O.filter((e=>{if(""===w)return!0;return e.name.toLowerCase().indexOf(w.toLowerCase())>=0})).sort((0,A.$w)(m));let k=[];k="ASC"===i?I:I.reverse();const B=[{type:"view",tooltip:"View",onClick:t=>{var s;const o=t.name||"",a="/browser/".concat(j).concat(o?"/".concat((0,c.nf)(o)):"");!E||null!==(s=t.name)&&void 0!==s&&s.endsWith("/")?(e((0,d.KX)([])),n(a),E||(e((0,d.TO)(!0)),e((0,d.SK)(!0))),e((0,d.A7)("".concat(o?"".concat((0,c.nf)(o)):"")))):(0,P._)(e,j,"".concat((0,c.nf)(o)),t)},sendOnlyId:!1}];let F=N||E?"This location is empty".concat(S?"":", please try uploading a new file"):(0,r.vj)([r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],"view Objects in this bucket");C&&(F="Objects List unavailable. Please review your WebSockets configuration and try again");let L="calc(100vh - 290px)";return v&&(L="calc(100vh - 315px)"),(0,y.jsx)(x.bQt,{itemActions:B,columns:S?Oe:Se,isLoading:g,entityName:"Objects",idField:"name",records:k,customPaperHeight:L,selectedItems:T,onSelect:E?void 0:t=>{const n=t.target,s=n.value,o=n.checked;let a=[...T];return o?a.push(s):a=a.filter((e=>e!==s)),e((0,d.KX)(a)),e((0,d.A7)(null)),a},customEmptyMessage:F,sortEnabled:{currentSort:m,currentDirection:i,onSortClick:t=>{const n=h()(t,"sortDirection","DESC");p(t.sortBy),u(n),e((0,d.Yw)(!0))}},onSelectAll:()=>{if(e((0,d.A7)(null)),T.length===k.length)return void e((0,d.KX)([]));const t=k.map((e=>e.name));e((0,d.KX)(t))},rowStyle:e=>{var t;let{index:n}=e;return null!==(t=k[n])&&void 0!==t&&t.delete_flag?"deleted":""},sx:{minHeight:b?"100%":"initial"},noBackground:!0})};var ye=n(64681);const Ce=()=>{const e=(0,l.jL)(),t=(0,o.d4)((e=>e.objectBrowser.searchObjects));return(0,y.jsx)(ye.A,{placeholder:"Start typing to filter objects in the bucket",onChange:t=>{e((0,d.$X)(t))},value:t})};var Ee=n(30614);const Ne=(0,S.A)(s.lazy((()=>n.e(5941).then(n.bind(n,65941))))),Ae=(0,S.A)(s.lazy((()=>Promise.resolve().then(n.bind(n,30718))))),Ie=(0,S.A)(s.lazy((()=>n.e(2704).then(n.bind(n,32704))))),ke=(0,S.A)(s.lazy((()=>Promise.resolve().then(n.bind(n,37524))))),Be={borderWidth:2,borderRadius:2,borderColor:"transparent",outline:"none"},Fe={borderStyle:"dashed",backgroundColor:"transparent",borderColor:"#2196f3"},Le={borderStyle:"dashed",backgroundColor:"transparent",borderColor:"#00e676"},Ve=()=>{var e;const t=(0,l.jL)(),n=(0,a.g)(),u=(0,a.Zp)(),b=(0,a.zy)(),g=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),f=(0,o.d4)((e=>e.objectBrowser.rewind.bucketToRewind)),v=(0,o.d4)((e=>e.objectBrowser.versionsMode)),S=(0,o.d4)((e=>e.objectBrowser.showDeleted)),C=(0,o.d4)((e=>e.objectBrowser.objectDetailsOpen)),E=(0,o.d4)((e=>e.objectBrowser.selectedInternalPaths)),P=(0,o.d4)((e=>e.objectBrowser.requestInProgress)),R=(0,o.d4)((e=>e.objectBrowser.simplePath)),U=(0,o.d4)((e=>e.objectBrowser.versionInfo)),z=(0,o.d4)((e=>e.objectBrowser.lockingEnabled)),G=(0,o.d4)((e=>e.objectBrowser.downloadRenameModal)),M=(0,o.d4)((e=>e.objectBrowser.selectedPreview)),J=(0,o.d4)((e=>e.objectBrowser.shareFileModalOpen)),K=(0,o.d4)((e=>e.objectBrowser.previewOpen)),W=(0,o.d4)((e=>e.objectBrowser.selectedBucket)),H=(0,o.d4)((e=>e.system.anonymousMode)),Y=(0,o.d4)((e=>e.objectBrowser.anonymousAccessOpen)),$=(0,o.d4)((e=>{var t;return(null===(t=e.objectBrowser)||void 0===t?void 0:t.records)||[]})),Z=(0,o.d4)(B.Nx),q=(0,o.d4)(B.fT),[Q,X]=(0,s.useState)(!1),[ee,te]=(0,s.useState)(!1),[ne,se]=(0,s.useState)(!1),[oe,ae]=(0,s.useState)(!1),[ie,le]=(0,s.useState)(!1),[ce,ue]=(0,s.useState)(null),[he,xe]=(0,s.useState)(null),[me,pe]=(0,s.useState)(!1),je=I(U.status),be=n.bucketName||"",ge=b.pathname.split("/browser/".concat(be,"/")),ve=2===ge.length?ge[1]:"",_e=(0,c.x6)(ve),Se=_e.split("/").filter((e=>""!==e));let Oe=[be];Se.length>0&&(Oe=Oe.concat(Se));const we=(0,s.useRef)(null),ye=(0,s.useRef)(null),Ve=(0,o.d4)((e=>e.console.session&&e.console.session.permissions||{})),De=[r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],Pe=Oe.join("/"),Re=function(e,t){const n=T(e,t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:[]).reduce(((e,t)=>{const n=w(t);return n&&e.push(".".concat(n)),e}),[]);return[...new Set(n)].join(",")}(Ve,Pe,De),Ue=T(Ve,Pe,De),ze=(0,_._)([Pe,...Ue],[r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS]),Ge=(0,_._)(be,[r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS,r.OV.S3_GET_BUCKET_VERSIONING]),Me=(0,_._)([Pe,...Ue],[r.OV.S3_DELETE_OBJECT]),Je=(0,_._)([Pe,...Ue],De)||H,Ke=(0,_._)(be,[r.OV.S3_GET_BUCKET_POLICY,r.OV.S3_PUT_BUCKET_POLICY,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS]),We=(0,o.d4)((e=>e.objectBrowser.selectedObjects)),He=(()=>{let e=!1;if(1===We.length){e=!!$.find((e=>e.name==="".concat(We[0])&&e.delete_flag))}return e})(),Ye=(0,s.useCallback)((()=>{const e=We[0],t=(0,c.nf)(e);!me&&t&&i.F.buckets.getObjectMetadata(be,{prefix:t}).then((e=>{let t=h()(e.data,"objectMetadata",{});pe(!0),xe(t)})).catch((e=>{console.error("Error Getting Metadata Status: ",e,null===e||void 0===e?void 0:e.detailedError),pe(!0)}))}),[be,We,me]);(0,s.useEffect)((()=>{be&&!He&&Ye()}),[be,We,Ye,He]),(0,s.useEffect)((()=>{g&&f!==be&&t((0,d.rS)())}),[g,f,be,t]),(0,s.useEffect)((()=>{null!==ye.current&&(ye.current.setAttribute("directory",""),ye.current.setAttribute("webkitdirectory",""))}),[ye]),(0,s.useEffect)((()=>{if(1===We.length){const e=We[0],t=e.endsWith("/");let n=(0,A.IZ)(he,e);le(!("none"===n||!ze)),ae(!(!ze||t))}else ae(!1),le(!1)}),[We,ze,he]),(0,s.useEffect)((()=>{ce||H||i.F.buckets.getBucketQuota(be).then((e=>{let t=null;e.data.quota&&(t=e.data),ue(t)})).catch((e=>{console.error("Error Getting Quota Status: ",e.error.detailedMessage),ue(null)}))}),[ce,be,H]),(0,s.useEffect)((()=>{We.length>0?t((0,d.TO)(!0)):0!==We.length||null!==E||P||t((0,d.TO)(!1))}),[We,E,t,P]),(0,s.useEffect)((()=>{ne||(t((0,B.ZU)(!0)),se(!0))}),[ne,t,se]),(0,s.useEffect)((()=>{!P&&!Z||H||i.F.buckets.bucketInfo(be).then((e=>{t((0,B.ZU)(!1)),t((0,B.$T)(e.data))})).catch((e=>{t((0,B.ZU)(!1)),t((0,O.C9)((0,m.S)(e)))}))}),[be,Z,t,H,P]),(0,s.useEffect)((()=>{""!==W&&i.F.buckets.getBucketRetentionConfig(W).then((e=>{t((0,d.PJ)(e.data))})).catch((()=>{t((0,d.PJ)(null))}))}),[W,t]);const $e=e=>{if(null!==e&&void 0!==e&&null!==e.target.files&&void 0!==e.target.files){e.preventDefault();var t=[];for(let n=0;n{let s="";R&&(s=R.endsWith("/")?R:R+"/");((e,n,s,o)=>{let a=a=>new Promise(((i,l)=>{let r="api/v1/buckets/".concat(n,"/objects/upload");const u=a.name,x=new Blob([a],{type:a.type});let m="";const p=h()(a,"path",""),j=h()(a,"webkitRelativePath","");let b=o;const g=(0,k.E0)(8);""!==p?b=p:""!==j&&(b=j);let f="";if(""!==s||""!==b){const e=b.split("/").slice(0,-1).join("/"),t=s.endsWith("/")?s.slice(0,-1):s;f="".concat(t).concat(t.endsWith("/")||""===e||e.startsWith("/")?"":"/").concat(e).concat(!e.endsWith("/")||""===e.trim()&&!s.endsWith("/")?"/":"")}r=""!==f?"".concat(r,"?prefix=").concat((0,c.nf)(f+u)):"".concat(r,"?prefix=").concat((0,c.nf)(u)),m=(0,c.nf)(f);const v=(0,c.nf)("".concat(n,"-").concat(m,"-").concat((new Date).getTime(),"-").concat(Math.random()));let _=new XMLHttpRequest;_.open("POST",r,!0),H&&_.setRequestHeader("X-Anonymous","1");const S=e.length>1;let O="An error occurred while uploading the file".concat(S?"s":"",".");const w={413:"Error - File size too large"};_.withCredentials=!1,_.onload=function(){if(_.status>=200&&_.status<300)t((0,d.rx)(v)),i({status:_.status}),(0,k.vy)(g);else{if(w[_.status])O=w[_.status];else if(_.response)try{const e=JSON.parse(_.response);O=e.detailedMessage}catch(e){O="something went wrong"}t((0,d.iL)({instanceID:v,msg:O})),l({status:_.status,message:O}),(0,k.vy)(g)}},_.upload.addEventListener("error",(()=>{l(O),t((0,d.iL)({instanceID:v,msg:"A network error occurred."}))})),_.upload.addEventListener("progress",(e=>{const n=Math.floor(100*e.loaded/e.total);t((0,d.DW)({instanceID:v,progress:n}))})),_.onerror=()=>{l(O),t((0,d.iL)({instanceID:v,msg:"A network error occurred."}))},_.onloadend=()=>{0===e.length&&t((0,d.Yw)(!0))},_.onabort=()=>{t((0,d.Dm)(v))};const T=new FormData;void 0!==a.size&&(T.append(a.size.toString(),x,u),(0,k.FP)(g,_),t((0,d.cP)({ID:g,bucketName:n,done:!1,instanceID:v,percentage:0,prefix:"".concat((0,c.x6)(m)).concat(u),type:"upload",waitingForFile:!1,failed:!1,cancelled:!1,errorMessage:""})),(0,k.vx)(g,T))}));const i=[];t((0,d.Nu)());for(let t=0;t{const n=e.filter((e=>"rejected"===e.status));if(n.length>0){const e=i.length,s=i.length-n.length,o={errorMessage:"There were some errors during file upload",detailedError:"Uploaded files ".concat(s,"/").concat(e)};t((0,O.C9)(o))}t((0,d.Yw)(!0))}))})(e,be,s,n)}),[be,t,R,H]),qe=(0,s.useCallback)((e=>{if(e&&e.length>0&&Je){let n=e[0].path,s=e;Re.length>0&&(s=e.filter((e=>{const t=w(e.name);return Re.includes(t)}))),s.length?(Ze(s,n),console.log("".concat(s.length," Allowed Files Processed out of ").concat(e.length,"."),Pe,...Ue),s.length!==e.length&&t((0,O.C9)({errorMessage:"Upload is restricted.",detailedError:(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload objects to this location")}))):(t((0,O.C9)({errorMessage:"Could not process drag and drop.",detailedError:(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload objects to this location")})),console.error("Could not process drag and drop . upload may be restricted.",Pe,...Ue))}Je||t((0,O.C9)({errorMessage:"Upload not allowed",detailedError:(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload objects to this location")}))}),[Ze]),{getRootProps:Qe,getInputProps:Xe,isDragActive:et,isDragAccept:tt}=(0,p.VB)({noClick:!0,onDrop:qe}),nt=(0,s.useMemo)((()=>({...Be,...et?Fe:{},...tt?Le:{}})),[et,tt]),st=e=>{if(t((0,d.A7)(null)),t((0,d.cQ)({status:!1})),C&&null!==E){const e=(0,c.x6)(ve).split("/");e.pop();let t="";e&&e.length>0&&(t="".concat(e.join("/"),"/")),u("/browser/".concat(be,"/").concat((0,c.nf)(t)))}t((0,d.TO)(!1)),e&&t((0,d.Yw)(!0))};let ot=j.c9.now();null!==q&&void 0!==q&&q.creation_date&&(ot=j.c9.fromISO(q.creation_date));const at=(null===We||void 0===We?void 0:We.length)<=1?"Download Selected":" Download selected objects as Zip. Any Deleted objects in the selection would be skipped from download.",it=[{action:()=>{t((0,F.op)(be))},label:"Download",disabled:!ze||He,icon:(0,y.jsx)(x.s3U,{}),tooltip:ze?at:(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"download objects from this bucket")},{action:()=>{t((0,F.mS)())},label:"Share",disabled:1!==We.length||!oe||He,icon:(0,y.jsx)(x.liv,{}),tooltip:oe?"Share Selected File":"Sharing unavailable"},{action:()=>{t((0,F.HS)())},label:"Preview",disabled:1!==We.length||!ie||He,icon:(0,y.jsx)(x.cyn,{}),tooltip:ie?"Preview Selected File":"Preview unavailable"},{action:()=>{t((0,F.oz)())},label:"Anonymous Access",disabled:1!==We.length||!We[0].endsWith("/")||!Ke,icon:(0,y.jsx)(x._kf,{}),tooltip:1===We.length&&We[0].endsWith("/")?"Set Anonymous Access to this Folder":"Anonymous Access unavailable"},{action:()=>{X(!0)},label:"Delete",icon:(0,y.jsx)(x.d7y,{}),disabled:!Me||0===We.length,tooltip:Me?"Delete Selected Files":(0,r.vj)([r.OV.S3_DELETE_OBJECT],"delete objects in this bucket")}];return(0,y.jsxs)(s.Fragment,{children:[J&&M&&(0,y.jsx)(Ae,{open:J,closeModalAndRefresh:()=>{t((0,d.Lf)(!1)),t((0,d.go)(null))},bucketName:be,dataObject:{name:M.name,last_modified:"",version_id:M.version_id}}),Q&&(0,y.jsx)(Ne,{deleteOpen:Q,selectedBucket:be,selectedObjects:We,closeDeleteModalAndRefresh:e=>{X(!1),e&&(t((0,O.Hk)("Objects deleted successfully.")),t((0,d.KX)([])),t((0,d.Yw)(!0)))},versioning:U}),ee&&(0,y.jsx)(Ie,{open:ee,closeModalAndRefresh:()=>{te(!1)},bucketName:be}),K&&M&&(0,y.jsx)(ke,{open:K,bucketName:be,actualInfo:{name:M.name||"",last_modified:"",version_id:M.version_id||"",size:M.size||0},onClosePreview:()=>{t((0,d.xE)(!1)),t((0,d.go)(null))}}),!!G&&(0,y.jsx)(re,{open:!!G,closeModal:()=>{t((0,d.Ew)(null))},currentItem:(null===(e=G.name.split("/"))||void 0===e?void 0:e.pop())||"",bucketName:be,internalPaths:ve,actualInfo:{name:G.name,last_modified:"",version_id:G.version_id,size:G.size}}),Y&&(0,y.jsx)(Ee.default,{onClose:()=>{t((0,d.I8)(!1))},bucket:be,modalOpen:Y,prefilledRoute:"".concat(We[0],"*")}),(0,y.jsxs)(x.Mxu,{variant:"full",children:[H&&(0,y.jsx)("div",{style:{paddingBottom:16},children:(0,y.jsx)(Ce,{})}),(0,y.jsx)(x.azJ,{withBorders:!0,sx:{padding:"0 5px"},children:(0,y.jsx)(x.lcx,{icon:(0,y.jsx)("span",{children:(0,y.jsx)(x.brV,{style:{width:30}})}),title:be,subTitle:H?null:(0,y.jsxs)(x.azJ,{sx:{"& .detailsSpacer":{marginRight:18,"@media (max-width: 600px)":{marginRight:0}}},children:[(0,y.jsxs)("span",{className:"detailsSpacer",children:["Created on:\xa0",(0,y.jsx)("strong",{children:null!==q&&void 0!==q&&q.creation_date?ot.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)"):""})]}),(0,y.jsxs)("span",{className:"detailsSpacer",children:["Access:\xa0\xa0",(0,y.jsx)("strong",{children:(null===q||void 0===q?void 0:q.access)||""})]}),q&&(0,y.jsx)(s.Fragment,{children:(0,y.jsxs)("span",{className:"detailsSpacer",children:[q.size&&(0,y.jsx)(s.Fragment,{children:(0,c.qO)(q.size)}),q.size&&ce&&(0,y.jsxs)(s.Fragment,{children:[" ","/ ",(0,c.qO)(ce.quota||0)]}),q.size&&q.objects?" - ":"",q.objects&&(0,y.jsxs)(s.Fragment,{children:[q.objects,"\xa0Object",q.objects&&1!==q.objects?"s":""]})]})})]}),actions:(0,y.jsxs)(s.Fragment,{children:[!H&&(0,y.jsx)(L.A,{tooltip:Ge?"Rewind Bucket":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS,r.OV.S3_GET_BUCKET_VERSIONING],"apply rewind in this bucket"),children:(0,y.jsx)(x.$nd,{id:"rewind-objects-list",label:"Rewind",icon:(0,y.jsx)(x.Exy,{color:"alert",dotOnly:!0,invisible:!g,children:(0,y.jsx)(x.osr,{style:{minWidth:16,minHeight:16,width:16,height:16,marginTop:-3}})}),variant:"regular",onClick:()=>{te(!0)},disabled:!je||!Ge})}),(0,y.jsx)(L.A,{tooltip:"Reload List",children:(0,y.jsx)(x.$nd,{id:"refresh-objects-list",label:"Refresh",icon:(0,y.jsx)(x.fNY,{}),variant:"regular",onClick:()=>{v?t((0,d.SK)(!0)):(t((0,d.A3)()),t((0,d.Yw)(!0)))},disabled:!H&&(!(0,_._)(be,[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET])||g)})}),(0,y.jsx)("input",{type:"file",multiple:!0,accept:Re||void 0,onChange:$e,style:{display:"none"},ref:we}),(0,y.jsx)("input",{type:"file",multiple:!0,onChange:$e,style:{display:"none"},ref:ye}),(0,y.jsx)(V,{bucketName:be,uploadPath:Pe,uploadFileFunction:e=>{we&&we.current&&we.current.click(),e()},uploadFolderFunction:e=>{ye&&ye.current&&ye.current.click(),e()}})]}),bottomBorder:!1})}),(0,y.jsxs)("div",{id:"object-list-wrapper",...Qe({style:{...nt}}),children:[(0,y.jsx)("input",{...Xe()}),(0,y.jsxs)(x.azJ,{withBorders:!0,sx:{display:"flex",borderTop:0,padding:0,"& .hideListOnSmall":{"@media (max-width: 799px)":{display:"none"}}},children:[v?(0,y.jsx)(s.Fragment,{children:null!==E&&(0,y.jsx)(fe,{internalPaths:E,bucketName:be})}):(0,y.jsx)(_.R,{scopes:[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],resource:be,errorProps:{disabled:!0},children:(0,y.jsxs)(x.xA9,{item:!0,xs:12,sx:{width:"100%",position:"relative","&.detailsOpen":{"@media (max-width: 799px)":{display:"none"}}},className:C?"detailsOpen":"",children:[!H&&(0,y.jsx)(x.xA9,{item:!0,xs:12,sx:{padding:"12px 14px 5px"},children:(0,y.jsx)(N,{bucketName:be,internalPaths:_e,additionalOptions:!je||g?null:(0,y.jsx)(x.Sc0,{name:"deleted_objects",id:"showDeletedObjects",value:"deleted_on",label:"Show deleted objects",onChange:()=>{t((0,d.A3)()),t((0,d.lA)(!S)),st(!0)},checked:S,sx:{marginLeft:5,"@media (max-width: 600px)":{marginLeft:0,flexDirection:"row"}}}),hidePathButton:!1})}),(0,y.jsx)(Te,{})]})}),!H&&(0,y.jsx)(_.R,{scopes:[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],resource:be,errorProps:{disabled:!0},children:(0,y.jsxs)(D,{open:C,closePanel:()=>{st(!1)},className:"".concat(v?"hideListOnSmall":""),children:[We.length>0&&(0,y.jsx)(x.Smc,{items:it,title:"Selected Objects:"}),null!==E&&(0,y.jsx)(de,{internalPaths:E,bucketName:be,onClosePanel:st,versioningInfo:U,locking:z})]})})]})]})]})]})};var De=n(18218),Pe=n(69772),Re=n(48793),Ue=n(59707),ze=n(55968);const Ge=e=>{let{bucketName:t}=e;const n=(0,l.jL)(),i=(0,o.d4)(we.s$),c=(0,o.d4)((e=>e.objectBrowser.versionsMode)),u=(0,o.d4)((e=>e.objectBrowser.versionedFile)),h=(0,o.d4)((e=>e.objectBrowser.searchVersions)),m=!(null===i||void 0===i||!i.includes("object-browser-only")),p=(0,a.Zp)(),j=(0,De.A)(t,[r.OV.S3_GET_BUCKET_POLICY,r.OV.S3_PUT_BUCKET_POLICY,r.OV.S3_GET_BUCKET_VERSIONING,r.OV.S3_PUT_BUCKET_VERSIONING,r.OV.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,r.OV.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,r.OV.S3_DELETE_BUCKET,r.OV.S3_GET_BUCKET_NOTIFICATIONS,r.OV.S3_PUT_BUCKET_NOTIFICATIONS,r.OV.S3_GET_REPLICATION_CONFIGURATION,r.OV.S3_PUT_REPLICATION_CONFIGURATION,r.OV.S3_GET_LIFECYCLE_CONFIGURATION,r.OV.S3_PUT_LIFECYCLE_CONFIGURATION,r.OV.ADMIN_GET_BUCKET_QUOTA,r.OV.ADMIN_SET_BUCKET_QUOTA,r.OV.S3_PUT_BUCKET_TAGGING,r.OV.S3_GET_BUCKET_TAGGING,r.OV.S3_LIST_BUCKET_VERSIONS,r.OV.S3_GET_BUCKET_POLICY_STATUS,r.OV.S3_DELETE_BUCKET_POLICY,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS]),b=(0,y.jsx)(s.Fragment,{children:c?(0,y.jsx)(s.Fragment,{children:(0,y.jsx)(ye.A,{placeholder:"Start typing to filter versions of ".concat(u),onChange:e=>{n((0,d.aj)(e))},value:h})}):(0,y.jsx)(_.R,{scopes:[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],resource:t,errorProps:{disabled:!0},children:(0,y.jsx)(Ce,{})})});return(0,s.useEffect)((()=>{n((0,O.ph)("object_browser"))}),[]),(0,y.jsx)(s.Fragment,{children:m?(0,y.jsxs)(x.xA9,{container:!0,sx:{padding:"20px 32px 0"},children:[(0,y.jsx)(x.xA9,{children:(0,y.jsx)(Pe.A,{marginRight:30,marginTop:10})}),(0,y.jsxs)(x.xA9,{item:!0,xs:!0,sx:{display:"flex",gap:10},children:[b,(0,y.jsx)(Ue.A,{})]})]}):(0,y.jsx)(Re.A,{label:(0,y.jsx)(x.EGL,{label:"Object Browser",onClick:()=>{p(r.zZ.OBJECT_BROWSER_VIEW)}}),actions:(0,y.jsxs)(s.Fragment,{children:[(0,y.jsx)(_.R,{scopes:r.pC[r.ac.BUCKET_ADMIN],resource:t,errorProps:{disabled:!0},children:(0,y.jsx)(L.A,{tooltip:j?"Configure Bucket":"You do not have the required permissions to configure this bucket. Please contact your MinIO administrator to request "+r.ac.BUCKET_ADMIN+" permisions.",children:(0,y.jsx)(x.$nd,{id:"configure-bucket-main",color:"primary","aria-label":"Configure Bucket",onClick:()=>p("/buckets/".concat(t,"/admin")),icon:(0,y.jsx)(x.Zes,{style:{width:20,height:20,marginTop:-3}}),style:{padding:"0 10px"}})})}),(0,y.jsx)(ze.A,{})]}),middleComponent:b})})},Me=()=>{const e=(0,l.jL)(),t=(0,a.g)(),n=(0,a.zy)(),u=(0,o.d4)((e=>e.objectBrowser.loadingVersioning)),h=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),x=(0,o.d4)((e=>e.objectBrowser.rewind.dateToRewind)),m=(0,o.d4)((e=>e.objectBrowser.showDeleted)),p=(0,o.d4)((e=>e.objectBrowser.requestInProgress)),j=(0,o.d4)((e=>e.objectBrowser.loadingLocking)),b=(0,o.d4)((e=>e.objectBrowser.reloadObjectsList)),g=(0,o.d4)((e=>e.objectBrowser.simplePath)),f=(0,o.d4)((e=>e.system.anonymousMode)),v=(0,o.d4)((e=>e.objectBrowser.selectedBucket)),_=(0,o.d4)((e=>e.objectBrowser.records)),S=t.bucketName||"",O=n.pathname.split("/browser/".concat(S,"/")),w=2===O.length?O[1]:"",T=(0,s.useCallback)((t=>{let n=(new Date).toISOString();null!==x&&h&&(n=x);e({type:"socket/OBRequest",payload:{bucketName:S,path:t,rewindMode:h||m,date:n}})}),[S,m,x,h,e]),C=(0,s.useCallback)((function(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const n=(0,c.x6)(w);e((0,d.cQ)({status:!1}));let s=n;n.endsWith("/")||""===n||(s="".concat(n.split("/").slice(0,-1).join("/"),"/")),"/"===s&&(s=""),(s!==g||S!==v||t)&&(e((0,d.u)(!0)),T(s))}),[w,e,g,v,S,T]);(0,s.useEffect)((()=>()=>{e({type:"socket/OBCancelLast"})}),[e]),(0,s.useEffect)((()=>{const t=(0,c.x6)(w);e((0,d.vn)(!0)),t.endsWith("/")||""===t?(e((0,d.TO)(!1)),e((0,d.A7)(null)),e((0,d.Qy)(!0))):(e((0,d.oe)(!0)),e((0,d.TO)(!0)),e((0,d.SK)(!0)),e((0,d.A7)("".concat(t?"".concat((0,c.nf)(t)):""))))}),[S,w,x,h,e]),(0,s.useEffect)((()=>{C(!1)}),[C]),(0,s.useEffect)((()=>{b&&0===_.length&&!p&&C(!0)}),[b,_,p,C]);const E=(0,De.A)(S,[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET])||f;return(0,s.useEffect)((()=>{u&&!f&&(E?i.F.buckets.getBucketVersioning(S).then((t=>{e((0,d.AP)(t.data)),e((0,d.vn)(!1))})).catch((t=>{console.error("Error Getting Object Versioning Status: ",t.error.detailedMessage),e((0,d.vn)(!1))})):(e((0,d.vn)(!1)),e((0,d.A3)())))}),[S,u,e,E,f]),(0,s.useEffect)((()=>{j&&(E?i.F.buckets.getBucketObjectLockingStatus(S).then((t=>{e((0,d.xW)(t.data.object_locking_enabled)),e((0,d.Qy)(!1))})).catch((t=>{console.error("Error Getting Object Locking Status: ",t.error.detailedMessage),e((0,d.Qy)(!1))})):(e((0,d.A3)()),e((0,d.Qy)(!1))))}),[S,j,e,E]),(0,y.jsxs)(s.Fragment,{children:[!f&&(0,y.jsx)(Ge,{bucketName:S}),(0,y.jsx)(Ve,{})]})}},30718:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var s=n(65043),o=n(22166),a=n(89923),i=n(61476),l=n.n(i),r=n(94141),c=n(24241),d=n(70579);const u=e=>{let{id:t,initialDate:n,label:o,maxSeconds:i,entity:l,onChange:r}=e;const u=Math.floor(i/86400),h=Math.floor(i%86400/3600),x=Math.floor(i%3600/60),[m,p]=(0,s.useState)(0),[j,b]=(0,s.useState)(0),[g,f]=(0,s.useState)(0),[v,_]=(0,s.useState)(!0),[S,O]=(0,s.useState)(c.c9.now());(0,s.useEffect)((()=>{p(u),b(h),f(x)}),[u,h,x]),(0,s.useEffect)((()=>{isNaN(j)||isNaN(m)||isNaN(g)||O(((e,t,n,s)=>c.c9.fromJSDate(e).plus({hours:n+24*t,minutes:s}))(n,m,j,g))}),[n,m,j,g]),(0,s.useEffect)((()=>{if(v){const e=S.toFormat("yyyy-MM-dd HH:mm:ss");r(e.split(" ").join("T"),!0)}else r("0000-00-00",!1)}),[S,r,v]),(0,s.useEffect)((()=>{let e=!0;(m<0||m>7||m>u||isNaN(m))&&(e=!1),(j<0||j>23||isNaN(j))&&(e=!1),(g<0||g>59||isNaN(g))&&(e=!1),m===u&&(j>h&&(e=!1),j===h&&g>x&&(e=!1)),m<=0&&j<=0&&g<=0&&(e=!1),_(e)}),[S,u,h,x,r,m,j,g]);const w={"& .textBoxContainer":{minWidth:0},"& input":{textAlign:"center",paddingRight:10,paddingLeft:10,width:40}};return(0,d.jsxs)(a.azJ,{className:"inputItem",children:[(0,d.jsx)(a.azJ,{sx:{display:"flex",alignItems:"center",marginBottom:5},children:(0,d.jsx)(a.l1Y,{htmlFor:t,children:o})}),(0,d.jsxs)(a.azJ,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-evenly",gap:10,"& .reverseInput":{flexFlow:"row-reverse","& > label":{fontWeight:400,marginLeft:15,marginRight:25}}},children:[(0,d.jsx)(a.azJ,{children:(0,d.jsx)(a.cl_,{id:t,className:"reverseInput removeArrows",type:"number",min:"0",max:"7",label:"Days",name:t,onChange:e=>{p(parseInt(e.target.value))},value:m.toString(),sx:w,noLabelMinWidth:!0})}),(0,d.jsx)(a.azJ,{children:(0,d.jsx)(a.cl_,{id:t,className:"reverseInput removeArrows",type:"number",min:"0",max:"23",label:"Hours",name:t,onChange:e=>{b(parseInt(e.target.value))},value:j.toString(),sx:w,noLabelMinWidth:!0})}),(0,d.jsx)(a.azJ,{children:(0,d.jsx)(a.cl_,{id:t,className:"reverseInput removeArrows",type:"number",min:"0",max:"59",label:"Minutes",name:t,onChange:e=>{f(parseInt(e.target.value))},value:g.toString(),sx:w,noLabelMinWidth:!0})})]}),(0,d.jsx)(a.azJ,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-start",marginTop:25,marginLeft:10,marginBottom:15,"& .validityText":{fontSize:14,marginTop:15,display:"flex",alignItems:"center",justifyContent:"center","@media (max-width: 900px)":{flexFlow:"column"},"& > .min-icon":{color:"#5E5E5E",width:15,height:15,marginRight:10}},"& .validTill":{fontWeight:"bold",marginLeft:15},"& .invalidDurationText":{marginTop:15,display:"flex",color:"red",fontSize:11}},children:v?(0,d.jsxs)("div",{className:"validityText",children:[(0,d.jsx)(a.qYV,{}),(0,d.jsxs)("div",{children:[l," will be available until:"]})," ",(0,d.jsx)("div",{className:"validTill",children:S.toFormat("MM/dd/yyyy HH:mm:ss ZZZZ")})]}):(0,d.jsx)("div",{className:"invalidDurationText",children:"Please select a valid duration."})})]})};var h=n(56483),x=n(64159),m=n(20554),p=n(56629),j=n(53518),b=n(81708),g=n(6035);const f=e=>{let{open:t,closeModalAndRefresh:n,bucketName:i,dataObject:c}=e;const f=(0,m.jL)(),v=(0,o.d4)(x.Rq),_=(0,o.d4)(g.yL),[S,O]=(0,s.useState)(""),[w,T]=(0,s.useState)(!0),[y,C]=(0,s.useState)(!1),[E,N]=(0,s.useState)(""),[A,I]=(0,s.useState)(!0),[k,B]=(0,s.useState)("null"),F=new Date;return(0,s.useEffect)((()=>{f((0,b.Ex)())}),[f]),(0,s.useEffect)((()=>{if(void 0===c.version_id)return v?(p.F.buckets.listObjects(i,{prefix:(0,h.nf)(c.name||""),with_versions:v}).then((e=>{const t=(e.data.objects||[]).find((e=>e.is_latest));B(t?"".concat(t.version_id):"null")})).catch((e=>{f((0,x.Dy)((0,j.S)(e.error)))})),void T(!1)):(B("null"),void T(!1));B(c.version_id||"null"),T(!1)}),[i,c,v,f]),(0,s.useEffect)((()=>{if(A&&!w){C(!0),O("");const e=new Date("".concat(E)),t=new Date,n=Math.ceil((e.getTime()-t.getTime())/1e3);n>0&&p.F.buckets.shareObject(i,{prefix:(0,h.nf)(c.name||""),version_id:k,expires:""!==E?"".concat(n,"s"):""}).then((e=>{O(e.data),C(!1)})).catch((e=>{f((0,x.Dy)((0,j.S)(e.error))),O(""),C(!1)}))}}),[c,E,i,A,O,f,v,w,k]),(0,d.jsx)(s.Fragment,{children:(0,d.jsxs)(r.A,{title:"Share File",titleIcon:(0,d.jsx)(a.liv,{style:{fill:"#4CCB92"}}),modalOpen:t,onClose:()=>{n()},children:[w&&(0,d.jsx)(a.xA9,{item:!0,xs:12,children:(0,d.jsx)(a.z21,{})}),!w&&(0,d.jsxs)(s.Fragment,{children:[(0,d.jsx)(a.xA9,{item:!0,xs:12,sx:{fontSize:14,fontWeight:400},children:(0,d.jsx)(a.m_M,{placement:"right",tooltip:(0,d.jsxs)("span",{children:["You can reset your session by logging out and logging back in to the web UI. ",(0,d.jsx)("br",{})," ",(0,d.jsx)("br",{}),"You can increase the maximum configuration time by setting the MINIO_STS_DURATION environment variable on all your nodes. ",(0,d.jsx)("br",{})," ",(0,d.jsx)("br",{}),"You can use ",(0,d.jsx)("b",{children:"mc share"})," as an alternative to this UI, where the session length does not limit the URL validity."]}),children:(0,d.jsxs)("span",{children:["The following URL lets you share this object without requiring a login. ",(0,d.jsx)("br",{}),"The URL expires automatically at the earlier of your configured time (",(0,h.K7)(_),") or the expiration of your current web session."]})})}),(0,d.jsx)("br",{}),(0,d.jsx)(a.xA9,{item:!0,xs:12,children:(0,d.jsx)(u,{initialDate:F,id:"date",label:"Active for",maxSeconds:_,onChange:(e,t)=>{I(t),t?N(e):(N(""),O(""))},entity:"Link"})}),(0,d.jsx)(a.xA9,{item:!0,xs:12,sx:{marginBottom:10},children:(0,d.jsx)(a.EmB,{actionButton:(0,d.jsx)(l(),{text:S,children:(0,d.jsx)(a.$nd,{id:"copy-path",variant:"regular",onClick:()=>{f((0,x.h0)("Share URL Copied to clipboard"))},disabled:""===S||y,style:{width:"28px",height:"28px",padding:"0px"},icon:(0,d.jsx)(a.TdU,{})})}),children:S})})]})]})})}},37524:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var s=n(65043),o=n(94141),a=n(89923),i=n(33097),l=n.n(i),r=n(93445),c=n(56483),d=n(56629),u=n(72809),h=n(97806),x=n(10934),m=n(70579);u.A.GlobalWorkerOptions.workerSrc="./scripts/pdf.worker.min.js";const p=e=>{let{path:t,loading:n,onLoad:o,downloadFile:i}=e;const[l,r]=(0,s.useState)(!1),[c,d]=(0,s.useState)(0);if(!t)return null;const u=c>5?5:c,p=Array.from(Array(u).keys());return(0,m.jsxs)(s.Fragment,{children:[l&&0===c&&(0,m.jsx)(a.Wei,{variant:"error",title:"Error",message:(0,m.jsxs)(s.Fragment,{children:["File preview couldn't be displayed, Please try Download instead.",(0,m.jsx)(a.azJ,{sx:{display:"flex",justifyContent:"center",marginTop:12},children:(0,m.jsx)(a.$nd,{id:"download-preview",onClick:i,variant:"callAction",children:"Download File"})})]}),sx:{marginBottom:10}}),!n&&!l&&(0,m.jsx)(a.Wei,{variant:"warning",title:"File Preview",message:(0,m.jsxs)(s.Fragment,{children:["This is a File Preview for the first ",p.length," pages of the document, if you wish to work with the full document please download instead.",(0,m.jsx)(a.azJ,{sx:{display:"flex",justifyContent:"center",marginTop:12},children:(0,m.jsx)(a.$nd,{id:"download-preview",onClick:i,variant:"callAction",children:"Download File"})})]}),sx:{marginBottom:10}}),!l&&(0,m.jsx)(a.azJ,{sx:{overflowY:"auto","& .react-pdf__Page__canvas":{margin:"0 auto",backgroundColor:"transparent"}},children:(0,m.jsx)(h.A,{file:t,onLoadSuccess:e=>{let{_pdfInfo:t}=e;d(t.numPages||0),r(!1),o()},onLoadError:e=>{r(!0),o(),console.error(e)},children:p.map((e=>(0,m.jsx)(x.A,{pageNumber:e+1,renderAnnotationLayer:!1,renderTextLayer:!1,renderForms:!1},"render-page-".concat(e))))})})]})};var j=n(48245),b=n(20554);const g=e=>{let{bucketName:t,actualInfo:n,isFullscreen:o=!1}=e;const i=(0,b.jL)(),[u,h]=(0,s.useState)(!0),[x,g]=(0,s.useState)(null),[f,v]=(0,s.useState)(!1),_=(null===n||void 0===n?void 0:n.name)||"",S=(0,s.useCallback)((()=>{if(!f){const e=(0,c.nf)(_);d.F.buckets.getObjectMetadata(t,{prefix:e,versionID:n.version_id||""}).then((e=>{let t=l()(e.data,"objectMetadata",{});v(!0),g(t)})).catch((e=>{console.error("Error Getting Metadata Status: ",e,null===e||void 0===e?void 0:e.detailedError),v(!0)}))}}),[t,_,f,n.version_id]);(0,s.useEffect)((()=>{t&&_&&S()}),[t,_,S]);let O="";if(n){const e=(0,c.nf)(n.name||"");let s=document.baseURI.replace(window.location.origin,"");O="".concat(window.location.origin).concat(s,"api/v1/buckets/").concat(t,"/objects/download?preview=true&prefix=").concat(e),n.version_id&&(O=O.concat("&version_id=".concat(n.version_id)))}let w=(0,r.IZ)(x,_);const T=()=>{h(!1)};return(0,m.jsxs)(s.Fragment,{children:["none"!==w&&u&&(0,m.jsx)(a.xA9,{item:!0,xs:12,children:(0,m.jsx)(a.z21,{})}),f?(0,m.jsxs)(a.azJ,{sx:{textAlign:"center","& .iframeContainer":{border:"0px",flex:"1 1 auto",width:"100%",height:250,backgroundColor:"transparent",borderRadius:5,"&.image":{height:500},"&.audio":{height:150},"&.video":{height:350},"&.fullHeight":{height:"calc(100vh - 185px)"}},"& .iframeBase":{backgroundColor:"#fff"},"& .iframeHidden":{display:"none"}},children:["video"===w&&(0,m.jsx)("video",{style:{width:"auto",height:"auto",maxWidth:"calc(100vw - 100px)",maxHeight:"calc(100vh - 200px)"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:T,children:(0,m.jsx)("source",{src:O,type:"video/mp4"})}),"audio"===w&&(0,m.jsx)("audio",{style:{width:"100%",height:"auto"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:T,children:(0,m.jsx)("source",{src:O,type:"audio/mpeg"})}),"image"===w&&(0,m.jsx)("img",{style:{width:"auto",height:"auto",maxWidth:"100vw",maxHeight:"100vh"},src:O,alt:"preview",onLoad:T}),"pdf"===w&&(0,m.jsx)(s.Fragment,{children:(0,m.jsx)(p,{path:O,onLoad:T,loading:u,downloadFile:()=>(0,j._)(i,t,O,n)})}),"none"===w&&(0,m.jsx)("div",{children:(0,m.jsx)(a.Wei,{message:" File couldn't be previewed using file extension or mime type. Please try Download instead",title:"Preview unavailable",sx:{margin:"15px 0"}})}),"none"!==w&&"video"!==w&&"audio"!==w&&"image"!==w&&"pdf"!==w&&(0,m.jsx)("div",{className:"iframeBase ".concat(u?"iframeHidden":""),children:(0,m.jsx)("iframe",{src:O,title:"File Preview",allowTransparency:!0,className:"iframeContainer ".concat(o?"fullHeight":w),onLoad:T,children:"File couldn't be loaded. Please try Download instead"})})]}):null]})},f=e=>{let{open:t,bucketName:n,actualInfo:i,onClosePreview:l}=e;return(0,m.jsx)(s.Fragment,{children:(0,m.jsx)(o.A,{modalOpen:t,title:"Preview - ".concat(null===i||void 0===i?void 0:i.name),onClose:l,wideLimit:!1,titleIcon:(0,m.jsx)(a.jG,{}),children:(0,m.jsx)(g,{bucketName:n,actualInfo:i})})})}},72237:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var s=n(65043),o=n(70579);const a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,o.jsx)(s.Suspense,{fallback:t,children:(0,o.jsx)(e,{...n})})}}},81708:(e,t,n)=>{"use strict";n.d(t,{Ex:()=>p,HS:()=>h,mS:()=>x,op:()=>u,oz:()=>m});var s=n(80907),o=n(56483),a=n(37414),i=n(93445),l=n(6035),r=n(64159),c=n(24241),d=n(56629);const u=(0,s.zD)("objectBrowser/downloadSelected",(async(e,t)=>{let{getState:n,rejectWithValue:s,dispatch:d}=t;const u=n(),h=t=>{const n=(0,o.nf)("".concat(e,"-").concat(t.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),s=(0,a.E0)(8),c=(0,i.RG)(e,(0,o.nf)(t.name),t.version_id,t.size,null,s,(e=>{d((0,l.DW)({instanceID:n,progress:e}))}),(()=>{d((0,l.rx)(n))}),(e=>{d((0,l.iL)({instanceID:n,msg:e}))}),(()=>{d((0,l.Dm)(n))}),(()=>{d((0,r.Hk)("File download will be handled directly by the browser."))}));(0,a.FP)(s,c),d((0,l.cP)({ID:s,bucketName:e,done:!1,instanceID:n,percentage:0,prefix:t.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))};if(0!==u.objectBrowser.selectedObjects.length){let t=[];const n=e=>u.objectBrowser.selectedObjects.includes(e.name);if(t=u.objectBrowser.records.filter(n),1===t.length){if(t[0].name.length>200&&(0,o.oK)().toLowerCase().includes("win"))return void d((0,l.Ew)(t[0]));h(t[0])}else if(1===t.length)h(t[0]);else if(t.length>1){const n="".concat(c.c9.now().toFormat("LL-dd-yyyy-HH-mm-ss"),"_files_list.zip"),s=t.reduce(((e,t)=>{const n=null===t||void 0===t?void 0:t.delete_flag;return t&&!n?e.push(t.name):console.log("Skipping ".concat(null===t||void 0===t?void 0:t.name," from download.")),e}),[]);return void await(0,i.Fj)(e,s,n)}}})),h=(0,s.zD)("objectBrowser/openPreview",(async(e,t)=>{let{getState:n,rejectWithValue:s,dispatch:o}=t;const a=n();if(1===a.objectBrowser.selectedObjects.length){let e;const t=e=>a.objectBrowser.selectedObjects.includes(e.name);e=a.objectBrowser.records.find(t),e&&(o((0,l.go)(e)),o((0,l.xE)(!0)))}})),x=(0,s.zD)("objectBrowser/openShare",(async(e,t)=>{let{getState:n,rejectWithValue:s,dispatch:o}=t;const a=n();if(1===a.objectBrowser.selectedObjects.length){let e;const t=e=>a.objectBrowser.selectedObjects.includes(e.name);e=a.objectBrowser.records.find(t),e&&(o((0,l.go)(e)),o((0,l.Lf)(!0)))}})),m=(0,s.zD)("objectBrowser/openAnonymousAccess",(async(e,t)=>{let{getState:n,dispatch:s}=t;const o=n();1===o.objectBrowser.selectedObjects.length&&o.objectBrowser.selectedObjects[0].endsWith("/")&&s((0,l.I8)(!0))})),p=(0,s.zD)("objectBrowser/maxShareLinkExpTime",(async(e,t)=>{let{rejectWithValue:n,dispatch:s}=t;return d.F.buckets.getMaxShareLinkExp().then((e=>{s((0,l.QV)(e.data.exp))})).catch((async e=>n(e.error)))}))},48245:(e,t,n)=>{"use strict";n.d(t,{_:()=>r});var s=n(56483),o=n(37414),a=n(93445),i=n(6035),l=n(64159);const r=(e,t,n,r)=>{var c;const d=(0,s.nf)("".concat(t,"-").concat(r.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),u=(0,s.oK)().toLowerCase().includes("win");if(((null===(c=r.name)||void 0===c?void 0:c.length)||0)>200&&u)return void e((0,i.Jl)(!0));const h=(0,o.E0)(8),x=(0,a.RG)(t,n,r.version_id,r.size||0,null,h,(t=>{e((0,i.DW)({instanceID:d,progress:t}))}),(()=>{e((0,i.rx)(d))}),(t=>{e((0,i.iL)({instanceID:d,msg:t}))}),(()=>{e((0,i.Dm)(d))}),(()=>{e((0,l.Hk)("File download will be handled directly by the browser."))}));(0,o.FP)(h,x),e((0,i.cP)({ID:h,bucketName:t,done:!1,instanceID:d,percentage:0,prefix:r.name||"",type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}},49501:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var s=n(65043),o=n(89923),a=n(70579);const i=e=>{let{value:t}=e;const[n,i]=(0,s.useState)(!1);return(0,a.jsxs)(o.azJ,{sx:{display:"flex",alignItems:"center",flexFlow:"row",["@media (max-width: ".concat(o.nmC.sm,"px)")]:{flexFlow:"column"}},children:[(0,a.jsx)(o.cl_,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:n?"text":"password",onChange:()=>{},value:t,overlayIcon:(0,a.jsx)(o.TdU,{}),readOnly:!0,overlayAction:()=>navigator.clipboard.writeText(t)}),(0,a.jsx)(o.$nd,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:()=>i(!n),label:"Show/Hide"})]})}},17640:()=>{},23237:()=>{},97492:()=>{},31815:()=>{},66671:()=>{},82787:()=>{}}]); -//# sourceMappingURL=2959.c4f178f1.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/2959.c4f178f1.chunk.js.map b/web-app/build/static/js/2959.c4f178f1.chunk.js.map deleted file mode 100644 index 4b84321a4..000000000 --- a/web-app/build/static/js/2959.c4f178f1.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/2959.c4f178f1.chunk.js","mappings":"4OA0CA,MA0GA,EA1GsBA,IAKC,IALA,UACrBC,EAAS,QACTC,EAAO,OACPC,EAAM,eACNC,GACeJ,EACf,MAAMK,GAAWC,EAAAA,EAAAA,OAEVC,EAAQC,IAAaC,EAAAA,EAAAA,UAAS,KAC9BC,EAAgBC,IAAqBF,EAAAA,EAAAA,UAAc,aAE1DG,EAAAA,EAAAA,YAAU,KACJR,GACFI,EAAUJ,EACZ,GACC,CAACA,IA6BJ,OACES,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXb,UAAWA,EACXc,MAAM,4BACNb,QAASA,EACTc,WAAWH,EAAAA,EAAAA,KAACI,EAAAA,IAAiB,IAAIC,UAEjCC,EAAAA,EAAAA,MAACC,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMJ,SAAA,EACtDL,EAAAA,EAAAA,KAACU,EAAAA,IAAQ,CACPC,MAAOjB,EACPkB,MAAO,SACPC,GAAI,SACJC,KAAM,SACNC,YAAa,eACbC,SAAWC,IACTtB,EAAUsB,EAAEC,OAAOP,MAAM,EAE3BQ,QACE,2SAGJnB,EAAAA,EAAAA,KAACoB,EAAAA,IAAM,CACLP,GAAG,SACHC,KAAK,SACLE,SAAWL,IACTb,EAAkBa,EAAM,EAE1BC,MAAM,SACND,MAAOd,EACPwB,QAxDc,CACpB,CAAET,MAAO,WAAYD,MAAO,YAC5B,CAAEC,MAAO,YAAaD,MAAO,aAC7B,CAAEC,MAAO,YAAaD,MAAO,cAsDvBW,UAAU,EACVC,SACEvB,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,SAAC,0EAKZoB,iBAAiB,WAEnBnB,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAe1B,SAAA,EACpDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,QACJoB,KAAK,SACLC,QAAQ,UACRC,QAjEQC,KAChBzC,EAAU,IACVG,EAAkB,WAAW,EAgErBc,MAAO,WAGTZ,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,kBACJoB,KAAK,SACLC,QAAQ,aACRZ,SAA4B,KAAlB5B,EAAO2C,OACjBF,QArEYG,KACpBC,EAAAA,EAAIjD,OACDkD,wBAAwBlD,EAAQ,CAC/BI,OAAQA,EACR+C,OAAQ5C,IAET6C,MAAMC,IACLnD,GAASoD,EAAAA,EAAAA,IAAmB,mCAC5BvD,GAAS,IAEVwD,OAAOF,IACNnD,GAASsD,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,EAAIK,SACjD3D,GAAS,GACT,EAyDIuB,MAAO,gBAIA,C,oSChIZ,MAAMqC,EAAmBC,IAEtBA,EAAYC,MAAM,yBAA2B,IAAI,GA+B9CC,EAA2B,SACtCC,EACAC,GAEI,IADJC,EAAgBC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAGnB,MAAMG,EAAsBC,OAAOC,KAAKR,GAAeS,QACrD,CAACC,EAA+BC,KAC1Bf,EAAgBe,IAAaA,EAASC,SAASX,KACjDS,EAAIC,GAAYX,EAAcW,IAEzBD,IAET,CAAC,GAgCH,OAAOH,OAAOC,KAAKF,GAAqBO,QA7BPC,IAC/B,MACMC,EADeT,EAAoBQ,GACXE,MAAMC,GAClCf,EAAOgB,MAAMC,IACX,IAAIC,GAAgB,EAEpB,IAD+C,IAA3BD,EAASE,QAAQ,KACpB,CACf,MAAMC,EAAiBH,EAASI,UAAU,EAAGJ,EAASf,OAAS,GAE/DgB,EAAgBH,EAAUL,SAASU,EACrC,CAEA,OAAOF,GAAiBH,IAAcE,CAAQ,MAQ5CK,EAJsBV,EAAgBS,UAC1C,EACAT,EAAgBO,QAAQ,UAGL,gBAAAI,OAAqBxB,GAK1C,OAAOc,IAFLS,GAA4C,mBAApBV,EAEC,GAI/B,E,eCrDA,MAAMY,GAAkBC,EAAAA,EAAAA,GACtBC,EAAAA,MACE,IAAM,mCAIJC,EAAkBC,EAAAA,GAAOC,KAAI,MACjCC,QAAS,OACT,uBAAwB,CACtBC,aAAc,OACdD,QAAS,OACTE,WAAY,SACZ,CAAC,sBAADT,OAAuBU,EAAAA,IAAYC,GAAE,QAAQ,CAC3CJ,QAAS,SAGb,uBAAwB,CACtBK,OAAQ,aAyRZ,EA9Q2BvG,IAKJ,IALK,WAC1BwG,EAAU,cACVC,EAAa,eACbC,EAAc,kBACdC,GACe3G,EACf,MAAMK,GAAWC,EAAAA,EAAAA,MACXsG,GAAWC,EAAAA,EAAAA,MAEXC,GAAgBC,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMC,cAAcC,OAAOJ,gBAE5CK,GAAeJ,EAAAA,EAAAA,KAClBC,GAAoBA,EAAMC,cAAcE,eAErCC,GAAgBL,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMC,cAAcG,gBAErCC,GAAgBN,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMM,OAAOD,iBAG7BE,EAAkBC,IAAuB/G,EAAAA,EAAAA,WAAkB,IAC3DgH,EAAkBC,IAAuBjH,EAAAA,EAAAA,WAAkB,GAE5DkH,EAAsB,CAC1BC,EAAAA,GAAWC,cACXD,EAAAA,GAAWE,gBAGP5D,GAAgB6C,EAAAA,EAAAA,KAAaC,GACjCA,EAAMe,QAAQC,SAAUhB,EAAMe,QAAQC,QAAQC,aAAoB,CAAC,IAGrE,IAAIC,EAAQzB,EAEU,KAAlBA,IACFyB,EAAK,IAAAvC,OAAOc,IAGd,MAAM0B,EAAaD,EAAME,MAAM,KAAKrD,QAAQsD,GAAkB,KAATA,IAC/CC,EAAuBH,EAAW7D,OAAS,EAE3CiE,EAAmB/B,EAAa0B,GAAS1B,EACzCgC,EAAwBvE,EAC5BC,EACAqE,EACAZ,IAGF/G,EAAAA,EAAAA,YAAU,KACR8G,GAAoB,GACpBjD,OAAOC,KAAKR,GAAeuE,SAASC,IAClCA,EAAM5D,SAASyD,IACbG,EAAM5D,SAAS,OACf4C,GAAoB,EAAK,GAC3B,GACD,CAACa,EAAkB9B,EAAevC,IAErC,MAAMyE,GACJC,EAAAA,EAAAA,GACE,CAACL,KAAqBC,GACtBb,IAEFN,GACAI,EAEF,IAAIoB,EAAiBV,EAAWW,KAAI,CAACC,EAAoBC,KACvD,MAAMC,EAAQ,GAAAtD,OAAMwC,EAAWe,MAAM,EAAGF,EAAQ,GAAGG,KAAK,KAAI,KACtDC,EAAK,YAAAzD,OAAea,EAAU,KAAAb,OAClCsD,EAAQ,GAAAtD,QAAM0D,EAAAA,EAAAA,IAAgBJ,IAAS,IAGzC,OAAID,IAAUV,GAAwBS,IAAe3B,EAC5C,MAIPjG,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAAA,QAAMyI,UAAW,oBAAoBpI,SAAC,MACrC8H,IAAUV,GACTzH,EAAAA,EAAAA,KAAA,QAAM0I,MAAO,CAAEC,OAAQ,UAAWC,WAAY,OAAQvI,UACnDwI,EAAAA,EAAAA,IAAuBX,MAG1BlI,EAAAA,EAAAA,KAAC8I,EAAAA,GAAI,CACHJ,MAAO,CACLE,WAAY,OAEdG,GAAIR,EACJpG,QAASA,KACP3C,GACEwJ,EAAAA,EAAAA,IAAuB,CAAEC,QAAQ,EAAOC,WAAY,KACrD,EACD7I,UAGAwI,EAAAA,EAAAA,IACEX,OAIP,eAAApD,OAxB2BqD,EAAMgB,YAyBzB,IAIXC,EAAsB,GAEtB9C,IACF8C,EAAe,EACbpJ,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPC,EAAAA,EAAAA,MAAA,QAAAD,SAAA,EACEL,EAAAA,EAAAA,KAAA,QAAMyI,UAAW,oBAAoBpI,SAAC,MACrCkG,EAAc,kBACV,+BAKb,MAAM8C,EAAyB,EAC7BrJ,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPL,EAAAA,EAAAA,KAAC8I,EAAAA,GAAI,CACHC,GAAE,YAAAjE,OAAca,GAChBxD,QAASA,KACP3C,GAASwJ,EAAAA,EAAAA,IAAuB,CAAEC,QAAQ,EAAOC,WAAY,KAAM,EACnE7I,SAEDsF,KACI,4BAENqC,KACAoB,GA6BL,OACE9I,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPC,EAAAA,EAAAA,MAAC4E,EAAe,CAAA7E,SAAA,CACbqG,IACC1G,EAAAA,EAAAA,KAAC+E,EAAe,CACd3F,UAAWsH,EACXf,WAAYA,EACZ2D,WAAY1D,EACZvG,QAlCkBkK,KAC1B5C,GAAoB,EAAM,EAkClB6C,eACE5C,MAEEmB,EAAAA,EAAAA,GACE,CAACL,KAAqBC,GACtBb,IACGN,MAKbxG,EAAAA,EAAAA,KAACyJ,EAAAA,IAAW,CACV5H,GAAI,CACF+G,WAAY,OAEdc,eA9CeA,KACrB,GAAIpD,EACF9G,GAASwJ,EAAAA,EAAAA,IAAuB,CAAEC,QAAQ,EAAOC,WAAY,UACxD,CACL,GAA0B,IAAtB5B,EAAW7D,OAGb,YAFAsC,EAAS,YAKX,MAAM4D,EAAWrC,EAAWe,MAAM,GAAI,GAEtCtC,EAAS,YAADjB,OACMa,GAAUb,OACpB6E,EAASlG,OAAS,EAAC,IAAAqB,QACX0D,EAAAA,EAAAA,IAAgB,GAAD1D,OAAI6E,EAASrB,KAAK,KAAI,OACzC,IAGV,GA4BMxC,mBACExF,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAAC4J,IAAe,CAACC,KAAI,GAAA/E,OAAKa,EAAU,KAAAb,OAAIwC,EAAWgB,KAAK,MAAOjI,UAC7DL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,YACJiJ,MACE9J,EAAAA,EAAAA,KAAC+J,EAAAA,IAAQ,CACPrB,MAAO,CACLsB,MAAO,OACPC,OAAQ,OACRC,KAAM,UACNC,WAAY,KAIlBjI,QAAS,UACTC,QAASA,KACP3C,GAASoD,EAAAA,EAAAA,IAAmB,4BAA4B,EAE1D8F,MAAO,CACLsB,MAAO,OACPC,OAAQ,OACRG,MAAO,UACPC,OAAQ,oBACRC,YAAa,QAInBtK,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CAAC9B,UAAW,oBAAoBpI,SAAEyF,OAEzCzF,SAEAgJ,KAEDxD,IACA7F,EAAAA,EAAAA,KAACwK,EAAAA,IAAO,CACNrJ,QACE2G,EACI,+BACA2C,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAWC,cAAeD,EAAAA,GAAWE,gBACtC,qBAEP5G,UAEDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,WACJsB,QAASA,KACPwE,GAAoB,EAAK,EAE3BrF,UAAUkF,IAAwBP,IAAkB6B,GACpDgC,MAAM9J,EAAAA,EAAAA,KAAC0K,EAAAA,IAAW,CAAChC,MAAO,CAAEwB,KAAM,aAClCxB,MAAO,CACLE,WAAY,UAEd1G,QAAS,UACTtB,MAAO,0BAKfZ,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CACF1I,GAAI,CACFwD,QAAS,OACT8E,UAAW,GACXQ,aAAc,EACdC,eAAgB,aAChB,UAAW,CACTC,SAAU,GACVC,WAAY,SACZC,cAAe,MACfC,SAAU,UAEZ,CAAC,sBAADlG,OAAuBU,EAAAA,IAAYC,GAAE,QAAQ,CAC3CJ,QAAS,SAEXhF,SAEDyF,MAEM,E,eChUR,MAAMmF,EAAmBhC,GACZ,YAAXA,GAAmC,cAAXA,E,+CCqBjC,MAsHA,EAtH0B9J,IAOC,IAPA,WACzBmE,EAAU,WACVqC,EAAU,aACVuF,GAAe,EAAK,mBACpBC,EAAkB,qBAClBC,EAAoB,eACpBC,EAAiB,CAAC,GACClM,EACnB,MAAOmM,EAAUC,IAAe3L,EAAAA,EAAAA,UAA6B,OACtD4L,EAAmBC,IAAwB7L,EAAAA,EAAAA,WAAkB,GAE9D4G,GAAgBN,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMM,OAAOD,gBAG9BnD,GAAgB6C,EAAAA,EAAAA,KAAaC,GACjCA,EAAMe,QAAQC,SAAUhB,EAAMe,QAAQC,QAAQC,aAAoB,CAAC,IAG/DN,EAAsB,CAC1BC,EAAAA,GAAWC,cACXD,EAAAA,GAAWE,gBAGPU,EAAwBvE,EAC5BC,EACAC,EACAwD,GAGI4E,EAAiBC,QAAQL,GAKzBM,EAAoBA,KACxBL,EAAY,KAAK,EAGbM,GACJ9D,EAAAA,EAAAA,GACE,CAACzE,KAAeqE,GAChBb,IACGN,EAEDsF,GAAsB/D,EAAAA,EAAAA,GAC1B,CAACpC,KAAegC,GAChBb,GACA,GACA,GAYIiF,EAAyBF,GAAuBC,EAEtD,OACExL,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAACgM,EAAAA,EAAc,CACb7K,QACE4K,EACI,gBACAtB,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAWC,cAAeD,EAAAA,GAAWE,gBACtC,+BAEP5G,UAEDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,cACJ,mCACA,gBAAc,OACd,gBAAe6K,EAAiB,YAAShI,EACzCvB,QAjDa8J,IACnBR,GAAsBD,GACtBD,EAAYU,EAAMC,cAAc,EAgD1BtL,MAAO,SACPkJ,MAAM9J,EAAAA,EAAAA,KAACmM,EAAAA,IAAU,IACjBjK,QAAS,aACTZ,SAAU4J,IAAiBa,EAC3BlK,GAAIwJ,OAGRrL,EAAAA,EAAAA,KAACoM,EAAAA,IAAgB,CACfvL,GAAI,mBACJQ,QAAS,CACP,CACET,MAAO,cACPkJ,MAAM9J,EAAAA,EAAAA,KAACmM,EAAAA,IAAU,IACjBxL,MAAO,OACPW,UAAWuK,GAAuBX,GAEpC,CACEtK,MAAO,gBACPkJ,MAAM9J,EAAAA,EAAAA,KAACqM,EAAAA,IAAgB,IACvB1L,MAAO,SACPW,UAAWwK,GAAuBZ,IAGtCoB,eAAgB,GAChBC,SAAWC,IApDA,WAoD8BA,EA/C7CrB,EAAmBS,GAJjBR,EAAqBQ,EAmD8B,EACjDa,kBAAmBA,KACjBhB,GAAqB,EAAM,EAE7BiB,KAAMlB,EACNF,SAAUA,EACVqB,aAAc,MACdC,gBAAc,MAEP,EClEf,EA5DyBzN,IAKC,IALA,KACxBuN,EAAI,WACJG,EAAU,UACVpE,EAAY,GAAE,SACdpI,GACkBlB,EAClB,OACEmB,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF1J,GAAI,gBACJgB,GAAI,CACFiL,YAAa,UACbC,YAAa,EACbC,YAAa,QACbC,aAAc,EACdC,uBAAwB,EACxBC,wBAAyB,EACzBnD,MAAO,EACPoD,mBAAoB,OACpBC,UAAW,SACXC,UAAW,OACXC,SAAU,WACVC,QAAS,EACTC,YAAa,EACb,SAAU,CACRzD,MAAO,IACP0D,SAAU,IACVC,gBAAiB,EACjBH,QAAS,GAEX,4BAA6B,CAC3B,SAAU,CACRxD,MAAO,OACP0D,SAAU,OACVC,gBAAiB,KAIvBlF,UAAS,GAAA3D,OAAK4H,EAAO,OAAS,GAAE,KAAA5H,OAAI2D,GAAYpI,SAAA,EAEhDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLE,QAAS,OACTrB,GAAI,qBACJsB,QAAS0K,EACT/C,MAAM9J,EAAAA,EAAAA,KAAC4N,EAAAA,IAAc,IACrB/L,GAAI,CACF0L,SAAU,WACVM,MAAO,EACPC,IAAK,GACLC,QAAS,EACT9D,OAAQ,GACR,yBAA0B,CACxB+D,gBAAiB,kBAItB3N,IACG,E,eCvDV,MA4BA,EA5BsBlB,IAAwC,IAAvC,KAAE2K,EAAI,QAAEmE,GAAyB9O,EACtD,OACEmB,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF1I,GAAI,CACFwD,QAAS,OACTE,WAAY,SACZ,cAAe,CACbyE,MAAO,GACPC,OAAQ,GACRK,YAAa,EACboD,SAAU,GACVQ,UAAW,IAEb,kBAAmB,CACjBtF,WAAY,MACZuF,SAAU,SACVC,aAAc,aAEhB/N,SAAA,CAEDyJ,GACD9J,EAAAA,EAAAA,KAAA,QAAMyI,UAAW,eAAepI,UAC7BgO,EAAAA,EAAAA,IAAmBJ,EAAQA,EAAQxK,OAAS,QAE3C,ECPG6K,EAAgC,CAC3C,CACExE,MAAM9J,EAAAA,EAAAA,KAACuO,EAAAA,IAAa,IACpBC,WAAY,CAAC,MAAO,MAAO,MAAO,OAAQ,QAE5C,CACE1E,MAAM9J,EAAAA,EAAAA,KAACyO,EAAAA,IAAa,IACpBD,WAAY,CAAC,MAAO,MAAO,QAE7B,CACE1E,MAAM9J,EAAAA,EAAAA,KAAC0O,EAAAA,IAAW,IAClBF,WAAY,CAAC,QAEf,CACE1E,MAAM9J,EAAAA,EAAAA,KAAC2O,EAAAA,IAAW,IAClBH,WAAY,CAAC,MAAO,SAEtB,CACE1E,MAAM9J,EAAAA,EAAAA,KAAC4O,EAAAA,IAAW,IAClBJ,WAAY,CAAC,MAAO,SAEtB,CACE1E,MAAM9J,EAAAA,EAAAA,KAAC6O,EAAAA,IAAY,IACnBL,WAAY,CAAC,MAAO,MAAO,QAE7B,CACE1E,MAAM9J,EAAAA,EAAAA,KAAC8O,EAAAA,IAAY,IACnBN,WAAY,CAAC,OAAQ,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,IAAK,SAEpE,CACE1E,MAAM9J,EAAAA,EAAAA,KAAC+O,EAAAA,IAAc,IACrBP,WAAY,CAAC,MAAO,SAEtB,CACE1E,MAAM9J,EAAAA,EAAAA,KAACgP,EAAAA,IAAU,IACjBR,WAAY,CAAC,QAEf,CACE1E,MAAM9J,EAAAA,EAAAA,KAACiP,EAAAA,IAAY,IACnBT,WAAY,CAAC,MAAO,QAEtB,CACE1E,MAAM9J,EAAAA,EAAAA,KAACkP,EAAAA,IAAW,IAClBV,WAAY,CAAC,MAAO,OAAQ,MAAO,QAErC,CACE1E,MAAM9J,EAAAA,EAAAA,KAACmP,EAAAA,IAAW,IAClBX,WAAY,CAAC,MAAO,MAAO,MAAO,OAEpC,CACE1E,MAAM9J,EAAAA,EAAAA,KAACoP,EAAAA,IAAY,IACnBZ,WAAY,CAAC,OAAQ,OAAQ,MAAO,SAEtC,CACE1E,MAAM9J,EAAAA,EAAAA,KAACqP,EAAAA,IAAa,IACpBb,WAAY,CAAC,OAAQ,MAAO,MAAO,OAAQ,MAAO,OAAQ,SAIjDc,EAAsB,SACjCC,GAEI,IADJC,EAAuBhM,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAEnBiM,EAAgBF,EAChBzF,GAAO9J,EAAAA,EAAAA,KAAC0P,EAAAA,IAAW,IAEnBH,EAAQI,SAAS,OACnB7F,GAAO9J,EAAAA,EAAAA,KAAC4P,EAAAA,IAAiB,IACzBH,EAAgBF,EAAQlH,MAAM,GAAI,IAGpC,MAAMwH,EAAmBN,EAAQO,cACjC,IAAK,MAAMC,KAAOzB,EAChB,IAAK,MAAM0B,KAAOD,EAAIvB,WAChBqB,EAAiBF,SAAS,IAAD7K,OAAKkL,MAChClG,EAAOiG,EAAIjG,OAKZyF,EAAQI,SAAS,MAAQJ,EAAQ7K,QAAQ,KAAO,IACnDoF,GAAO9J,EAAAA,EAAAA,KAACiQ,EAAAA,IAAe,KAGzB,MAAMC,EAAYT,EAAclI,MAAM,KAEtC,OAAIiI,EACK1F,GAGF9J,EAAAA,EAAAA,KAACmQ,EAAa,CAACrG,KAAMA,EAAMmE,QAASiC,GAC7C,E,eC/GA,MAiCA,EA3BuB/Q,IAAoC,IAAnC,SAAEiR,GAA2BjR,EACnD,MAAMkR,EAAWzM,OAAOC,KAAKuM,GAE7B,OACEpQ,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,SACNgQ,EAASpI,KAAI,CAACsH,EAAiBpH,KAC9B,MAAMmI,EAZUf,IACfgB,MAAMC,QAAQjB,GACjBA,EAAQtH,IAAIY,EAAAA,IAAwBP,KAAK,OACzCO,EAAAA,EAAAA,IAAuB0G,GASFkB,CAAeL,EAASb,IAC3C,OACEjP,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF1I,GAAI,CACF8I,aAAc,GACdE,SAAU,GACV6F,UAAW,IACXpD,UAAW,QACXjN,SAAA,EAGFL,EAAAA,EAAAA,KAAA,UAAAK,SAASkP,KACTvP,EAAAA,EAAAA,KAAA,SACCsQ,IAAU,YAAAxL,OAJMyK,EAAO,KAAAzK,OAAIqD,EAAMgB,YAK9B,KAGD,E,qCCrCR,MAAMwH,EAAS,CACpB,CAAEhQ,MAAO,KAAMC,MAAO,WACtB,CAAED,MAAO,KAAMC,MAAO,YACtB,CAAED,MAAO,KAAMC,MAAO,SACtB,CAAED,MAAO,KAAMC,MAAO,SACtB,CAAED,MAAO,KAAMC,MAAO,OACtB,CAAED,MAAO,KAAMC,MAAO,QACtB,CAAED,MAAO,KAAMC,MAAO,QACtB,CAAED,MAAO,KAAMC,MAAO,UACtB,CAAED,MAAO,KAAMC,MAAO,aACtB,CAAED,MAAO,KAAMC,MAAO,WACtB,CAAED,MAAO,KAAMC,MAAO,YACtB,CAAED,MAAO,KAAMC,MAAO,aAGXgQ,EAAOL,MAAMM,KAAKN,MAAM,KAAK,CAACO,EAAGC,KAAG,CAC/CpQ,OAAQoQ,EAAM,GAAG5H,WACjBvI,OAAQmQ,EAAM,GAAG5H,eAGb6H,GAAc,IAAIC,MAAOC,cAElBC,EAAQZ,MAAMM,KAAKN,MAAM,KAAK,CAACO,EAAGM,KAAO,CACpDzQ,OAAQyQ,EAAUJ,GAAa7H,WAC/BvI,OAAQwQ,EAAUJ,GAAa7H,e,eCLjC,MA0IA,GA1IqBkI,EAAAA,EAAAA,aACnB,CAAAlS,EAUEmS,KACI,IAVJ,GACEzQ,EAAE,MACFD,EAAK,eACL2Q,GAAiB,EAAK,QACtBpQ,EAAU,GAAE,aACZqQ,GAAe,EAAK,aACpBC,EAAY,MACZ9Q,EAAQ,IACWxB,GAGrBuS,EAAAA,EAAAA,qBAAoBJ,GAAK,MAASK,gBAElC,MAAOC,EAAOC,IAAYjS,EAAAA,EAAAA,UAAiB,KACpCkS,EAAKC,IAAUnS,EAAAA,EAAAA,UAAiB,KAChCoS,EAAMC,IAAWrS,EAAAA,EAAAA,UAAiB,KAEzCG,EAAAA,EAAAA,YAAU,KAGR,GAAc,KAAVY,EAAc,CAChB,MAAMuR,EAAavR,EAAM4G,MAAM,KAE/B0K,EAAQC,EAAW,IACnBL,EAASK,EAAW,IAEpBH,EAAO,GAADjN,OAAIqN,SAASD,EAAW,KAChC,IACC,CAACvR,KAEJZ,EAAAA,EAAAA,YAAU,KACR,MAAOqS,EAASC,GDzBGC,EAACN,EAAcJ,EAAeE,KACrD,MAAMS,EAActB,KAAKuB,MAAM,GAAD1N,OAAIkN,EAAI,KAAAlN,OAAI8M,EAAK,KAAA9M,OAAIgN,IAEnD,GAAIW,MAAMF,GACR,MAAO,EAAC,EAAO,IAGjB,MAAMG,EAAcP,SAASP,GACvBe,EAAYR,SAASL,GAErBc,EAAiBF,EAAc,GAAE,IAAA5N,OAAO4N,GAAgBA,EACxDG,EAAeF,EAAY,GAAE,IAAA7N,OAAO6N,GAAcA,EAElDG,EAAa,IAAI7B,KAAKsB,GAAaQ,cAAcxL,MAAM,KAAK,GAC5D8K,EAAU,GAAAvN,OAAMkN,EAAI,KAAAlN,OAAI8N,EAAc,KAAA9N,OAAI+N,GAEhD,MAAO,CAACC,IAAeT,EAAYA,EAAW,ECSZC,CAAUN,EAAMJ,EAAOE,GACrDL,EAAaY,EAAYD,EAAQ,GAChC,CAACR,EAAOE,EAAKE,EAAMP,IAEtB,MAAME,EAAYA,KAChBE,EAAS,IACTE,EAAO,IACPE,EAAQ,GAAG,EAGPe,EAAiBA,IACjBzB,IAGK,EAIL0B,EAAmB,CAAC,CAAEtS,MAAO,GAAIC,MAAO,cAAgB+P,GACxDuC,EAAc,CAAC,CAAEvS,MAAO,GAAIC,MAAO,YAAcgQ,GACjDuC,EAAe,CAAC,CAAExS,MAAO,GAAIC,MAAO,aAAeuQ,GAEzD,OACE7Q,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC9B,UAAW,YAAYpI,SAAA,EAC1BL,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CACF1I,GAAI,CACFwD,QAAS,OACTE,WAAY,SACZ6N,IAAK,EACLzI,aAAc,GACdtK,UAEFC,EAAAA,EAAAA,MAAC+S,EAAAA,IAAU,CAACC,QAASzS,EAAGR,SAAA,EACtBL,EAAAA,EAAAA,KAAA,QAAAK,SAAOO,IACM,KAAZO,IACCnB,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CACF1I,GAAI,CACF4L,WAAY,EACZpI,QAAS,OACTE,WAAY,SACZ,cAAe,CACbyE,MAAO,KAET3J,UAEFL,EAAAA,EAAAA,KAACwK,EAAAA,IAAO,CAACrJ,QAASA,EAASoS,UAAU,MAAKlT,UACxCL,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CACF1I,GAAI,CACF,cAAe,CACbmI,MAAO,KAET3J,UAEFL,EAAAA,EAAAA,KAACwT,EAAAA,IAAQ,gBAOrBlT,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC1I,GAAI,CAAEwD,QAAS,OAAQ+N,IAAK,IAAK/S,SAAA,EACpCL,EAAAA,EAAAA,KAACoB,EAAAA,IAAM,CACLP,GAAE,GAAAiE,OAAKjE,EAAE,UACTC,KAAI,GAAAgE,OAAKjE,EAAE,UACXF,MAAOiR,EACP5Q,SAAWyS,IACT5B,EAAS4B,EAAS,EAEpBpS,QAAS4R,EACTrS,MAAO,GACPU,SAAU0R,OAGZhT,EAAAA,EAAAA,KAACoB,EAAAA,IAAM,CACLP,GAAE,GAAAiE,OAAKjE,EAAE,QACTC,KAAI,GAAAgE,OAAKjE,EAAE,QACXF,MAAOmR,EACP9Q,SAAWyS,IACT1B,EAAO0B,EAAS,EAElBpS,QAAS6R,EACTtS,MAAO,GACPU,SAAU0R,OAGZhT,EAAAA,EAAAA,KAACoB,EAAAA,IAAM,CACLP,GAAE,GAAAiE,OAAKjE,EAAE,SACTC,KAAI,GAAAgE,OAAKjE,EAAE,SACXF,MAAOqR,EACPhR,SAAWyS,IACTxB,EAAQwB,EAAS,EAEnBpS,QAAS8R,EACTvS,MAAO,GACPU,SAAU0R,IACVnR,GAAI,CACF8I,aAAc,WAIhB,ICuFZ,EArNqBxL,IAMM,IANL,KACpBuN,EAAI,qBACJgH,EAAoB,WACpBxK,EAAU,WACVyK,EAAU,WACVhO,GACmBxG,EACnB,MAAMK,GAAWC,EAAAA,EAAAA,MACXmU,GAAkB1N,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,cAAcwN,mBAGpCC,EAAeC,IAAoBlU,EAAAA,EAAAA,WAAkB,IACrDqC,EAAM8R,IAAWnU,EAAAA,EAAAA,UAAmC,KACpDoU,EAAMC,IAAWrU,EAAAA,EAAAA,UAAiB,KAClCsU,EAAaC,IAAkBvU,EAAAA,EAAAA,WAAkB,IACjDwU,EAAUC,IAAezU,EAAAA,EAAAA,WAAkB,IAC3C0U,EAAmBC,IAAwB3U,EAAAA,EAAAA,WAAkB,IAEpEG,EAAAA,EAAAA,YAAU,KAMR,GALI4T,EAAWa,iBACbT,GAAuB,OAAfH,QAAe,IAAfA,OAAe,EAAfA,EAAiBa,OAAQC,EAAAA,GAAoBC,YACrDJ,GAAqB,IAGnBZ,EAAWiB,qBAAsB,CACnC,MAAMC,EAAY,IAAI5D,KAAK0C,EAAWiB,sBACtC,GAA6B,iBAAzBC,EAAU1L,WAA+B,CAC3C,MAAM6I,EAAO6C,EAAU3D,cACjBU,GFPeb,EEOM8D,EAAUC,WAAa,GFN3C,GAAE,IAAAhQ,OAAOiM,GAAG,GAAAjM,OAAQiM,GEOrBe,EAAM+C,EAAUE,UACjBtC,MAAMX,IAAkB,QAAVF,GAAoBa,MAAMT,IAC3CiC,EAAQ,GAADnP,OAAIkN,EAAI,KAAAlN,OAAI8M,EAAK,KAAA9M,OAAIgN,GAEhC,CACAyC,GAAqB,EACvB,CFdyBxD,KEczB,GACC,CAAC4C,EAA2B,OAAfC,QAAe,IAAfA,OAAe,EAAfA,EAAiBa,OAEjC,MAAMO,GAAcC,EAAAA,EAAAA,QAAmB,MAUjC7S,EAAYA,KAChB0R,GAAiB,GACjBC,EAAQW,EAAAA,GAAoBC,YACxBK,EAAYE,SACdF,EAAYE,QAAQvD,WACtB,EAkEIwD,EACJb,IAA+B,eAATrS,GAAkC,KAATA,GAEjD,OACEjC,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXC,MAAM,uBACNd,UAAWsN,EACXrN,QAASA,KACP+C,IACAsR,GAAqB,EAAM,EAC3BrT,UAEFL,EAAAA,EAAAA,KAAA,QACEoV,YAAU,EACVC,aAAa,MACbC,SAAWrU,IA1FCA,KAChBA,EAAEsU,gBAAgB,EA0FZD,CAASrU,EAAE,EACXZ,UAEFC,EAAAA,EAAAA,MAACC,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMJ,SAAA,EACtDC,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC9B,UAAW,YAAYpI,SAAA,EAC1BL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,oBAAwB,KAAG6I,KAEpCiM,IACCnV,EAAAA,EAAAA,KAACwV,EAAAA,IAAM,CACL7U,MAAM,SACNE,GAAG,SACHC,KAAK,SACL2U,QAAS5B,EACT7S,SAAWC,IACT6S,GAAkBD,EAAc,EAElCjT,MAAO,SACP8U,gBAAiB,CAAC,UAAW,eAGjC1V,EAAAA,EAAAA,KAAC2V,EAAAA,IAAU,CACTC,aAAc3T,EACdpB,GAAG,OACHC,KAAK,OACLF,MAAM,OACN2Q,gBACGsC,GAAkBS,GAA8B,KAATrS,EAE1CjB,SAAWC,IACT8S,EAAQ9S,EAAEC,OAAOP,MAA6B,EAEhDkV,gBAAiB,CACf,CAAEjV,MAAO,aAAcD,MAAO+T,EAAAA,GAAoBC,YAClD,CAAE/T,MAAO,aAAcD,MAAO+T,EAAAA,GAAoBoB,gBAGtD9V,EAAAA,EAAAA,KAAC+V,EAAY,CACXlV,GAAG,OACHD,MAAM,OACN2Q,iBArICsC,IAA2B,eAAT5R,GAAkC,eAATA,IAsI5CqP,IAAK0D,EACLrU,MAAOqT,EACPxC,cAAc,EACdC,aAAcA,CAACuC,EAAc5B,KAC3B+B,EAAe/B,GACXA,GACF6B,EAAQD,EACV,KAGJ1T,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAe1B,SAAA,EACpDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,QACJoB,KAAK,SACLC,QAAQ,UACRC,QAASC,EACTxB,MAAO,WAETZ,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,OACJoB,KAAK,SACLC,QAAQ,aACRZ,SACGuS,GAA0B,KAAT5R,GACjB4R,IAAkBK,GACnBE,EAEFjS,QApGmB6T,KAC7B3B,GAAY,GACZ,MAAM4B,EAAiBtC,EAAW7S,MAAQ,GACpCoV,EAAYvC,EAAWwC,YAAc,KAErCC,EACHvC,GAA0B,eAAT5R,EAA0B,GAAA6C,OAAMkP,EAAI,cAAZ,GAEvCH,GAA0B,eAAT5R,EAtDHoU,EACnBJ,EACAC,EACAE,KAEA7T,EAAAA,EAAI+T,QACDC,mBACC5Q,EACA,CACEjG,QAAQ8I,EAAAA,EAAAA,IAAgByN,GACxBE,WAAYD,GAAa,IAE3B,CACEM,QAASJ,EACT3B,KAAMxS,IAGTS,MAAK,KACJ2R,GAAY,GACZX,GAAqB,EAAK,IAE3B7Q,OAAO4T,IACNjX,GAASkX,EAAAA,EAAAA,KAA0B3T,EAAAA,EAAAA,GAAe0T,EAAIzT,SACtDqR,GAAY,EAAM,GAClB,EAoCJgC,CAAaJ,EAAgBC,EAAWE,GAjCjBO,EACvBV,EACAC,KAEA3T,EAAAA,EAAI+T,QACDM,sBAAsBjR,EAAY,CACjCjG,QAAQ8I,EAAAA,EAAAA,IAAgByN,GACxBE,WAAYD,GAAa,KAE1BxT,MAAK,KACJ2R,GAAY,GACZX,GAAqB,EAAK,IAE3B7Q,OAAO4T,IACNjX,GAASkX,EAAAA,EAAAA,KAA0B3T,EAAAA,EAAAA,GAAe0T,EAAIzT,SACtDqR,GAAY,EAAM,GAClB,EAYFsC,CAAiBV,EAAgBC,EAKgB,EAuFzCtV,MAAO,kBAKF,E,4BCnNnB,MA6IA,GA7IqBzB,IAOM,IAPL,2BACpB0X,EAA0B,WAC1BC,EAAU,eACVC,EAAc,eACdd,EAAc,eACde,EAAc,gBACdC,EAAkB,IACC9X,EACnB,MAAMK,GAAWC,EAAAA,EAAAA,OAYVyX,EAAeC,IAAmBC,EAAAA,GAAAA,IAXpBC,IAAMR,GAA2B,KAClCJ,IAClBjX,GAASsD,EAAAA,EAAAA,IAAqB2T,IAGJ,mBAAtBA,EAAIa,eACNT,GAA2B,EAC7B,KAKKU,EAAgBC,IAAqB5X,EAAAA,EAAAA,WAAkB,IACvD6X,EAAkBC,IAAuB9X,EAAAA,EAAAA,WAAkB,GAE5DgU,GAAkB1N,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,cAAcwN,kBAGrC+D,GACJ5P,EAAAA,EAAAA,GACE,CAACgP,GACD,CAAChQ,EAAAA,GAAW6Q,kCACiB,gBAAX,OAAfhE,QAAe,IAAfA,OAAe,EAAfA,EAAiBa,MAExB,IAAKwB,EACH,OAAO,KAeT,OACEjW,EAAAA,EAAAA,KAAC6X,GAAAA,EAAa,CACZ3X,MAAK,gBACL4X,YAAa,SACbC,OAAQjB,EACR3W,WAAWH,EAAAA,EAAAA,KAACgY,EAAAA,IAAiB,IAC7BC,UAAWf,EACXgB,UApBoBC,KACtB,MACMC,GADwBC,EAAAA,EAAAA,IAAgBpC,GACNtG,SAAS,KACjDwH,EACE,SAAS,mBAADrS,OACWiS,EAAc,oBAAAjS,OAAmBmR,GAAcnR,OAC5C,KAApBmS,EAAsB,eAAAnS,OACHmS,GAAe,cAAAnS,OAChBsT,EAAS,kBAAAtT,OAAiByS,IAAgBzS,OAC3D2S,EAAmB,eAAiB,IACxC,EAWCpY,QAxCYA,IAAMwX,GAA2B,GAyC7CyB,qBACEhY,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CAAC,qCACyBL,EAAAA,EAAAA,KAAA,UACjCA,EAAAA,EAAAA,KAAA,KAAAK,UAAIgY,EAAAA,EAAAA,IAAgBpC,KAAqB,IACpB,KAApBgB,GACC3W,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,eAENA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,UAAAK,SAAS4W,OAGX,GACA,MACAjX,EAAAA,EAAAA,KAAA,UACFA,EAAAA,EAAAA,KAAA,SACCiL,EAA8B,OAAd+L,QAAc,IAAdA,OAAc,EAAdA,EAAgB/N,SACX,KAApBgO,IACEjX,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPL,EAAAA,EAAAA,KAACwV,EAAAA,IAAM,CACL5U,MAAO,sBACP8U,gBAAiB,CAAC,MAAO,MACzBD,QAAS8B,EACT5W,MAAO,kBACPE,GAAG,kBACHC,KAAK,kBACLE,SAAWC,IACTuW,GAAmBD,EAAe,EAEpCgB,YAAY,OAInBZ,IAAcJ,GAAsC,KAApBN,KAC/BjX,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPL,EAAAA,EAAAA,KAAA,OACE0I,MAAO,CACLyB,UAAW,IACX9J,UAEFL,EAAAA,EAAAA,KAACwV,EAAAA,IAAM,CACL5U,MAAO,yBACP8U,gBAAiB,CAAC,MAAO,MACzBD,QAASgC,EACT9W,MAAO,oBACPE,GAAG,oBACHC,KAAK,oBACLE,SAAWC,IACTyW,GAAqBD,EAAiB,EAExCc,YAAY,SAKnBhB,IACCjX,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPC,EAAAA,EAAAA,MAAA,OACEoI,MAAO,CACLyB,UAAW,GACXE,OAAQ,oBACR4C,aAAc,EACdc,QAAS,EACTC,gBAAiB,YACjB5D,MAAO,WACP/J,SAAA,CACH,8DAC6D,KAC5DL,EAAAA,EAAAA,KAAA,SAAM,mCAGRA,EAAAA,EAAAA,KAAA,SAAM,4CAMd,ECrCN,GAxG0Bb,IAMC,IANA,KACzBuN,EAAI,qBACJgH,EAAoB,WACpBxK,EAAU,WACVvD,EAAU,WACV6S,GACmBrZ,EACnB,MAAMK,GAAWC,EAAAA,EAAAA,OACVgZ,EAAkBC,IAAuB9Y,EAAAA,EAAAA,WAAkB,IAC3DwU,EAAUC,IAAezU,EAAAA,EAAAA,WAAkB,GAC5CsW,EAAYsC,EAAWrC,YAE7BpW,EAAAA,EAAAA,YAAU,KACR,MAAMkJ,EAAS0P,IAAIH,EAAY,oBAAqB,OACpDE,EAA+B,OAAXzP,EAAgB,GACnC,CAACuP,IAEJ,MA2BMpW,EAAYA,KAChBsW,GAAoB,EAAM,EAG5B,OACE1Y,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXC,MAAM,iBACNd,UAAWsN,EACXrN,QAASA,KACP+C,IACAsR,GAAqB,EAAM,EAC3BrT,UAEFL,EAAAA,EAAAA,KAAA,QACEoV,YAAU,EACVC,aAAa,MACbC,SAAWrU,IA3CCA,KAChBA,EAAEsU,iBACFlB,GAAY,GAEZ9R,EAAAA,EAAI+T,QACDsC,mBACCjT,EACA,CACEjG,QAAQ8I,EAAAA,EAAAA,IAAgBU,GACxBiN,WAAYD,GAAa,IAE3B,CACEjN,OAAQwP,EACJI,EAAAA,GAAsBC,QACtBD,EAAAA,GAAsBE,WAG7BrW,MAAK,KACJ2R,GAAY,GACZX,GAAqB,EAAK,IAE3B7Q,OAAO4T,IACNjX,GAASkX,EAAAA,EAAAA,KAA0B3T,EAAAA,EAAAA,GAAe0T,EAAIzT,SACtDqR,GAAY,EAAM,GAClB,EAoBEiB,CAASrU,EAAE,EACXZ,UAEFC,EAAAA,EAAAA,MAACC,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMJ,SAAA,EACtDC,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC9B,UAAW,YAAYpI,SAAA,EAC1BL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,WAAe,KAAGsF,MAE5B3F,EAAAA,EAAAA,KAACwV,EAAAA,IAAM,CACL7U,MAAM,YACNE,GAAG,YACHC,KAAK,YACL2U,QAASgD,EACTzX,SAAWC,IACTyX,GAAqBD,EAAiB,EAExC7X,MAAO,oBACP8U,gBAAiB,CAAC,UAAW,YAC7BvU,QACE,wFAGJb,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAe1B,SAAA,EACpDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,QACJoB,KAAK,SACLC,QAAQ,UACRC,QAASC,EACTxB,MAAO,WAETZ,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,OACJoB,KAAK,SACLC,QAAQ,aACRZ,SAAU8S,EACVxT,MAAO,mBAKF,ECnFboY,GAAY7T,EAAAA,GAAO8T,GAAE9Z,IAAA,IAAC,MAAE+Z,GAAO/Z,EAAA,MAAM,CACzCiL,MAAOuO,IAAIO,EAAO,sBAAuB,WACzCzL,WAAY,EACb,IA+QD,GA7QoB0L,IAKF,IAADC,EAAA,IALI,UACnBha,EAAS,iBACTia,EAAgB,WAChB1T,EAAU,WACV6S,GACUW,EACV,MAAM3Z,GAAWC,EAAAA,EAAAA,MACX6Z,GAAmBpT,EAAAA,EAAAA,IAAYqT,EAAAA,KAC9BC,EAAQC,IAAa7Z,EAAAA,EAAAA,UAAiB,KACtC8Z,EAAUC,IAAe/Z,EAAAA,EAAAA,UAAiB,KAC1Cga,EAAWC,IAAgBja,EAAAA,EAAAA,WAAkB,IAC7Cka,EAAeC,IAAoBna,EAAAA,EAAAA,WAAkB,IACrDoa,EAAWC,IAAgBra,EAAAA,EAAAA,UAAiB,KAC5Csa,EAAaC,IAAkBva,EAAAA,EAAAA,UAAiB,IAEjDqW,GAAiBzN,EAAAA,EAAAA,IAAgBgQ,EAAW1X,MAAQ,IAEpDsZ,EAAc5B,EAAW6B,KACzBC,EAAc1W,OAAOC,KAAKuW,GAAe,CAAC,GAE1CG,EAA6B,QAAlBnB,EAAGZ,EAAW1X,YAAI,IAAAsY,OAAA,EAAfA,EAAiB7R,MAAM,KACrCiT,GAAyB,OAAXD,QAAW,IAAXA,OAAW,EAAXA,EAAaE,QAAS,GAkEpCC,EAAWC,IACfra,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF1I,GAAI,CACFgJ,SAAU,GACVnF,OAAQ,cACRkD,WAAY,SACZuF,SAAU,SACVC,aAAc,WACdpE,MAAO,QACP3J,SAAA,CACH,MACKsa,EAAS,IAAM,GAAG,UAAM3a,EAAAA,EAAAA,KAAA,UAAAK,SAASma,OAIzC,OACExa,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPL,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXb,UAAWA,EACXc,MAAO4Z,EAAgB,aAAY,YACnCza,QAASA,KACPga,GAAiB,EAAK,EAExBuB,UAAWd,EAAgB,SAAW,UACtC3Z,UAAW2Z,GAAgB9Z,EAAAA,EAAAA,KAAC6a,EAAAA,IAAY,KAAM7a,EAAAA,EAAAA,KAAC8a,EAAAA,IAAW,IAAIza,SAE7DyZ,GACC9Z,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPC,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CAACqZ,WAAS,EAAA1a,SAAA,CACZqa,GAAQ,GAAO,0CACwB,KACxCpa,EAAAA,EAAAA,MAAC0Y,GAAS,CAAA3Y,SAAA,CACP2Z,EAAU,MAAIE,KACJ,IAAI,KAEjB5Z,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAe1B,SAAA,EACpDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,SACJoB,KAAK,SACLC,QAAQ,UACRC,QA9CK6Y,KACnBf,EAAa,IACbE,EAAe,IACfJ,GAAiB,EAAM,EA4CTnZ,MAAO,YAETZ,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLC,KAAK,SACLC,QAAQ,YACRC,QAhFS8Y,KACvB,MAAMC,EAAmB,IAAKd,UACvBc,EAAYlB,GAEnB,MAAMmB,EAAQ7B,EAAmBd,EAAWrC,YAAc,GAAK,OAE/D5T,EAAAA,EAAI+T,QACD8E,cACCzV,EACA,CAAEjG,OAAQuW,EAAgBE,WAAYgF,GACtC,CAAEd,KAAMa,IAETxY,MAAK,KACJ2W,GAAiB,GACjBQ,GAAa,EAAM,IAEpBhX,OAAO4T,IACNjX,GAASkX,EAAAA,EAAAA,KAA0B3T,EAAAA,EAAAA,GAAe0T,EAAIzT,SACtD6W,GAAa,EAAM,GACnB,EA8DUhZ,GAAI,YACJD,MAAO,wBAMfN,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAAlK,SAAA,EACFL,EAAAA,EAAAA,KAACqb,EAAAA,EAAe,CACd9X,OAAQ,CACNwD,EAAAA,GAAWuU,sBACXvU,EAAAA,GAAWwU,gBAEbC,SAAU7V,EAAWtF,UAErBC,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF1I,GAAI,CACFwD,QAAS,OACToW,SAAU,SACVzR,MAAO,QACP3J,SAAA,CAEDqa,GAAQ,IACTpa,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF1I,GAAI,CACFgJ,SAAU,GACVC,WAAY,UACZzK,SAAA,CACH,iBAECL,EAAAA,EAAAA,KAAA,SACwB,IAAvBsa,EAAY7W,QACXzD,EAAAA,EAAAA,KAAA,QAAMyI,UAAW,QAAQpI,SAAC,uCAI1BL,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,KAEXxB,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CAAC1I,GAAI,CAAEsI,UAAW,MAAOQ,aAAc,QAAStK,SACjDia,EAAYrS,KAAI,CAACyT,EAAgBvT,KAChC,MAAMwT,EAAMhD,IAAIyB,EAAY,GAADtV,OAAK4W,GAAU,IAC1C,MAAY,KAARC,GAEA3b,EAAAA,EAAAA,KAACqb,EAAAA,EAAe,CAEd9X,OAAQ,CAACwD,EAAAA,GAAW6U,0BACpBJ,SAAU7V,EACVkW,WAAY,CACVC,WAAY,KACZC,SAAU,MACV1b,UAEFL,EAAAA,EAAAA,KAACgc,EAAAA,IAAG,CACFnb,GAAE,GAAAiE,OAAK4W,EAAM,OAAA5W,OAAM6W,GACnB/a,MAAK,GAAAkE,OAAK4W,EAAM,OAAA5W,OAAM6W,GACtBzZ,QAAS,UACTkI,MAAO,UACP2R,SAAUA,KApHlBE,EAACP,EAAgBC,KACnC1B,EAAayB,GACbvB,EAAewB,GACf5B,GAAiB,EAAK,EAkHMkC,CAAYP,EAAQC,EAAI,KAE1B,QAAA7W,OAhBWqD,IAoBZ,IAAI,eAMrBnI,EAAAA,EAAAA,KAACqb,EAAAA,EAAe,CACd9X,OAAQ,CACNwD,EAAAA,GAAWmV,sBACXnV,EAAAA,GAAWE,gBAEbuU,SAAU7V,EACVkW,WAAY,CAAEva,UAAU,EAAMa,QAAS,MAAO9B,UAE9CC,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAAlK,SAAA,EACFL,EAAAA,EAAAA,KAACmc,EAAAA,IAAY,CAACrS,MAAM9J,EAAAA,EAAAA,KAACoc,EAAAA,IAAa,IAAKC,WAAW,EAAMhc,SAAC,iBAGzDC,EAAAA,EAAAA,MAACC,EAAAA,IAAU,CAACE,kBAAkB,EAAOD,aAAa,EAAMH,SAAA,EACtDL,EAAAA,EAAAA,KAACU,EAAAA,IAAQ,CACPC,MAAO6Y,EACP5Y,MAAO,UACPC,GAAI,YACJC,KAAM,YACNC,YAAa,gBACbC,SAAWC,IACTwY,EAAUxY,EAAEC,OAAOP,MAAM,KAG7BX,EAAAA,EAAAA,KAACU,EAAAA,IAAQ,CACPC,MAAO+Y,EACP9Y,MAAO,YACPC,GAAI,cACJC,KAAM,cACNC,YAAa,kBACbC,SAAWC,IACT0Y,EAAY1Y,EAAEC,OAAOP,MAAM,KAG/BL,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAe1B,SAAA,EACpDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,QACJoB,KAAK,SACLC,QAAQ,UACRkI,MAAM,UACNjI,QA5NFC,KAChBuX,EAAY,IACZF,EAAU,GAAG,EA2NK7Y,MAAO,WAETZ,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLC,KAAK,SACLC,QAAQ,aACRZ,SACsB,KAApBoY,EAASrX,QACS,KAAlBmX,EAAOnX,QACPuX,EAEFzX,QAlOEma,KACpBzC,GAAa,GACb,MAAM0C,EAAc,CAAC,EAErBA,EAAO/C,GAAUE,EACjB,MAAM8C,EAAa,IAAKpC,KAAgBmC,GAElCpB,EAAQ7B,EAAmBd,EAAWrC,YAAc,GAAK,OAE/D5T,EAAAA,EAAI+T,QACD8E,cACCzV,EACA,CAAEjG,OAAQuW,EAAgBE,WAAYgF,GACtC,CAAEd,KAAMmC,IAET9Z,MAAK,KACJ2W,GAAiB,GACjBQ,GAAa,EAAM,IAEpBhX,OAAO4T,IACNjX,GAASkX,EAAAA,EAAAA,KAA0B3T,EAAAA,EAAAA,GAAe0T,EAAIzT,SACtD6W,GAAa,EAAM,GACnB,EA6MchZ,GAAG,UACHD,MAAO,0BASd,E,gBCtRf,MAmIA,GAnIsBzB,IAKM,IALL,4BACrBsd,EAA2B,YAC3BC,EAAW,YACXC,EAAW,WACXC,GACoBzd,EACpB,MAAMK,GAAWC,EAAAA,EAAAA,MACXJ,EAAUA,IAAMod,GAA4B,IAC3CI,EAAWC,IAAgBld,EAAAA,EAAAA,WAAkB,IAC7Cmd,EAAeC,IAAoBpd,EAAAA,EAAAA,UAAiB,KACpDqd,EAAaC,IAAkBtd,EAAAA,EAAAA,UAAiB,IAEvD,IAAK+c,EACH,OAAO,KAsDT,OACErc,EAAAA,EAAAA,MAAC2E,EAAAA,SAAc,CAAA5E,SAAA,EACX0c,IACA/c,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXb,UAAWsd,EACXvc,WAAWH,EAAAA,EAAAA,KAACmd,EAAAA,IAAe,IAC3Bjd,MAAK,iBACLb,QAASA,EAAQgB,UAEjBC,EAAAA,EAAAA,MAAA,QACE8U,YAAU,EACVC,aAAa,MACbC,SAAWrU,IAhBHA,KAChBA,EAAEsU,gBAAgB,EAgBRD,CAASrU,EAAE,EACXZ,SAAA,CACH,8BAC2BL,EAAAA,EAAAA,KAAA,KAAAK,UAAIgY,EAAAA,EAAAA,IAAgBsE,KAAiB,IAAE,KACjE3c,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAACwV,EAAAA,IAAM,CACL5U,MAAO,UACP8U,gBAAiB,CAAC,MAAO,MACzBD,QAASoH,EACTlc,MAAO,UACPE,GAAG,UACHC,KAAK,UACLE,SAAWC,IACT6b,GAAcD,EAAU,EAE1BtE,YAAY,MAEdvY,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAe1B,UACpDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,UACJoB,KAAK,SACLC,QAAQ,aACRkI,MAAM,UACNjI,QApFSib,UACrB,MAAMC,GAAO7U,EAAAA,EAAAA,IAAgBmU,EAAc,YACrCW,GAAS9U,EAAAA,EAAAA,IAAgBoU,GAE/B,IAAIW,EAAWC,SAASC,QAAQC,QAAQC,OAAOC,SAASC,OAAQ,IAR9CT,gBACLU,MAAMC,EAAK,CAAEC,OAAQ,QAUlCC,CAFqB,GAAAnZ,OAAM6Y,OAAOC,SAASC,QAAM/Y,OAAGyY,EAAQ,iCAAAzY,OAAgCwY,EAAM,UAAAxY,OAASuY,EAAI,aAAAvY,OAAY+X,IAGxHna,MAAK0a,UACJ,IAAKza,EAAIub,GAAI,CACX,MAAMC,QAAoBxb,EAAIyb,OAE9B5e,GACEsD,EAAAA,EAAAA,IAAqB,CACnBub,aAAcF,EAAOG,QACrBhH,cAAe6G,EAAOI,OAG5B,CACA,MAAMC,QAAmB7b,EAAI6b,OAGvBC,EAAW9b,EAAI+b,QAAQ/F,IAAI,uBAAuBpR,MAAM,KAAK,GAC7DoX,GAAaC,EAAAA,EAAAA,IAAeH,IAAa,IAE/CI,EAAAA,EAAAA,IAAgBL,EAAMC,GACtBvB,EAAeuB,GACI,KAAfE,EAIJ3B,EAAiB2B,GAHftf,GAG0B,IAE7BwD,OAAO4T,IACNjX,GAASsD,EAAAA,EAAAA,IAAqB2T,GAAK,GACnC,EAkDQ7V,MAAO,mBAMhBmc,GACCzc,EAAAA,EAAAA,MAACL,EAAAA,EAAY,CACXb,UAAWsd,EACXxc,MAAM,yBACNb,QAzDmByf,MACzBC,EAAAA,EAAAA,IAAa9B,GACb5d,IACA2d,EAAiB,GAAG,EAuDd7c,WAAWH,EAAAA,EAAAA,KAACgf,EAAAA,IAAe,IAAI3e,SAAA,EAE/BC,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAAlK,SAAA,CAAC,6DAEHL,EAAAA,EAAAA,KAAA,SAAM,2CAGRA,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CAAAlK,UACFL,EAAAA,EAAAA,KAACif,GAAAA,EAAW,CAACte,MAAOoc,SAGtB,OACW,ECrDrB,GAtF2B5d,IAOC,IAPA,KAC1BuN,EAAI,WACJwS,EAAU,YACV1E,EAAW,cACX5U,EAAa,WACb4S,EAAU,WACV7S,GACoBxG,EACpB,MAAMK,GAAWC,EAAAA,EAAAA,OAEV0f,EAAaC,IAAkBxf,EAAAA,EAAAA,UAAiB4a,IAChD6E,EAAgBC,IAAqB1f,EAAAA,EAAAA,WAAkB,GAQ9D,OACEU,EAAAA,EAAAA,MAACL,EAAAA,EAAY,CACXC,MAAK,kBACLd,UAAWsN,EACXrN,QAAS6f,EACT/e,WAAWH,EAAAA,EAAAA,KAACuf,EAAAA,IAAQ,IAAIlf,SAAA,EAExBC,EAAAA,EAAAA,MAAA,OAAAD,SAAA,CAAK,wDAEHL,EAAAA,EAAAA,KAAA,SAAM,sFAGNA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,gDAERA,EAAAA,EAAAA,KAAA,QACEoV,YAAU,EACVC,aAAa,MACbC,SAAWrU,IAxBGA,KAClBA,EAAEsU,kBACFiK,EAAAA,EAAAA,GAAehgB,EAAUmG,EAAYC,EAAe4S,GACpD0G,GAAY,EAsBNO,CAAWxe,EAAE,EACbZ,UAEFC,EAAAA,EAAAA,MAACC,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMJ,SAAA,EACtDL,EAAAA,EAAAA,KAACU,EAAAA,IAAQ,CACPG,GAAG,oBACHC,KAAK,oBACLE,SAAWiL,IACTmT,EAAenT,EAAM/K,OAAOP,MAAM,EAEpCC,MAAM,GACNqB,KAAM,OACNtB,MAAOwe,EACPnc,MACEmc,EAAY1b,OAAS,MAAQ4b,EACzB,oDACA,MAGRrf,EAAAA,EAAAA,KAACwV,EAAAA,IAAM,CACL7U,MAAM,iBACNE,GAAG,iBACHC,KAAK,iBACL2U,QAAS4J,EACTre,SAAWiL,IACTqT,EAAkBrT,EAAM/K,OAAOuU,SAC3BxJ,EAAM/K,OAAOuU,SACf2J,EAAe5E,EACjB,EAEF5Z,MAAO,uBAETZ,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAe1B,UACpDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,gBACJoB,KAAK,SACLC,QAAQ,aACRkI,MAAM,UACN9I,SAAU6d,EAAY1b,OAAS,MAAQ4b,EACvCze,MAAO,2BAKF,ECvCb8e,GAA0B,CAC9BC,WAAW,EACXC,cAAe,GACfC,kBAAmB,GACnB/e,KAAM,GACN0T,eAAgB,GAChBI,qBAAsB,GACtBkL,KAAM,EACNzF,KAAM,CAAC,EACPlE,gBAAYzS,GAitBd,GAtsB0BvE,IAMM,IANL,cACzByG,EAAa,WACbD,EAAU,eACVqR,EAAc,QACd+I,EAAO,aACPC,GACwB7gB,EACxB,MAAMK,GAAWC,EAAAA,EAAAA,MAEX6Z,GAAmBpT,EAAAA,EAAAA,IAAYqT,EAAAA,IAC/BjT,GAAeJ,EAAAA,EAAAA,KAClBC,GAAoBA,EAAMC,cAAcE,eAErC2Q,GAAkB/Q,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,cAAc6Q,kBAErCgJ,GAAoB/Z,EAAAA,EAAAA,KACvBC,GAAoBA,EAAMC,cAAc6Z,qBAGpCC,EAAoBC,IAAyBvgB,EAAAA,EAAAA,WAAkB,IAC/DwgB,EAAoBC,IAAyBzgB,EAAAA,EAAAA,WAAkB,IAC/D0gB,EAAcC,IAAmB3gB,EAAAA,EAAAA,WAAkB,IACnD4gB,EAAeC,IAAoB7gB,EAAAA,EAAAA,WAAkB,IACrD8gB,EAAkBC,IAAuB/gB,EAAAA,EAAAA,WAAkB,IAC3D4Y,EAAYoI,IAAiBhhB,EAAAA,EAAAA,UAA8B,OAC3DihB,EAAiBC,IAAsBlhB,EAAAA,EAAAA,UAAyB,KAChEmhB,EAAeC,IAAoBphB,EAAAA,EAAAA,UAA8B,OACjEqhB,EAAUC,IAAethB,EAAAA,EAAAA,UAAyB,KAClDkX,EAAYqK,IAAiBvhB,EAAAA,EAAAA,WAAkB,IAC/CwhB,EAAaC,IAAkBzhB,EAAAA,EAAAA,WAAkB,IACjD0hB,EAAmBC,KAAwB3hB,EAAAA,EAAAA,UAAiB,IAC5D4hB,GAAcC,KAAmB7hB,EAAAA,EAAAA,WAAkB,IACnDwQ,GAAUsR,KAAe9hB,EAAAA,EAAAA,UAAqB,OAC9C+hB,GAAcC,KAAsBhiB,EAAAA,EAAAA,WAAkB,GAIvD4a,KAFuBnC,EAAAA,EAAAA,IAAgBzS,IAAkB,IACtB2B,MAAM,KACfkT,OAAS,GAGzC,IAAIoH,GAA4B,GAC5BrJ,GAAcA,EAAW1X,OAC3B+gB,GAAkBrJ,EAAW1X,KAAKyG,MAAM,OAG1CxH,EAAAA,EAAAA,YAAU,KACR,GAAIuZ,GAAoBuH,GAAmBA,EAAgBpd,QAAU,EAAG,CACtE,IAAIqe,EACFjB,EAAgBtc,MAAMwd,GAAqBA,EAAGpC,aAAcD,GAEtC,KAApBzI,IACF6K,EACEjB,EAAgBtc,MACbwd,GAAqBA,EAAG5L,aAAec,KACrCyI,IAGJoC,EAAYE,kBACfJ,IAAmB,GAGrBhB,EAAckB,EAChB,IACC,CAAC7K,EAAiBqC,EAAkBuH,KAEvC9gB,EAAAA,EAAAA,YAAU,KACJkgB,GAAuC,KAAlBra,GACvBrD,EAAAA,EAAI+T,QACD2L,YAAYtc,EAAY,CACvBjG,OAAQkG,EACRsc,cAAe5I,IAEhB5W,MAAMC,IACL,MAAMwf,EAAyBxf,EAAIyf,KAAKC,SAAW,GACnD,GAAI/I,EAAkB,CACpBwH,EAAmBqB,GACnBjB,EAAYiB,GAEZ,MAAMG,EAAeH,EAAOre,QAC1B,CAACC,EAAawe,IACC,OAATA,QAAS,IAATA,GAAAA,EAAWzC,KACN/b,EAAMwe,EAAUzC,KAElB/b,GAET,GAGFwd,GAAqBe,EACvB,KAAO,CACL,MAAME,EAAUL,EAAO,GAEvBvB,EAAc4B,GACdtB,EAAY,IAEPsB,EAAQR,kBACXJ,IAAmB,EAEvB,CAEApiB,GAASijB,EAAAA,EAAAA,KAAqB,GAAO,IAEtC5f,OAAO4T,IACNvP,QAAQlE,MAAM,+BAAgCyT,EAAIzT,OAClDxD,GAASijB,EAAAA,EAAAA,KAAqB,GAAO,GAE3C,GACC,CACDxC,EACAta,EACAC,EACApG,EACA8Z,EACArC,KAGFlX,EAAAA,EAAAA,YAAU,KACJ4hB,IAAkC,KAAlB/b,GAClBrD,EAAAA,EAAI+T,QACDoM,kBAAkB/c,EAAY,CAC7BjG,OAAQkG,EACR+c,WAAqB,OAAVnK,QAAU,IAAVA,OAAU,EAAVA,EAAYrC,aAAc,KAEtCzT,MAAMC,IACL,IAAIigB,EAAWjK,IAAIhW,EAAIyf,KAAM,iBAAkB,CAAC,GAEhDV,GAAYkB,GACZhB,IAAmB,EAAM,IAE1B/e,OAAO4T,IACNvP,QAAQlE,MAAM,kCAAmCyT,EAAIa,eACrDsK,IAAmB,EAAM,GAE/B,GACC,CAACjc,EAAYC,EAAe+b,GAAwB,OAAVnJ,QAAU,IAAVA,OAAU,EAAVA,EAAYrC,aAEzD,IAAI0M,GAAoB,GAEpBrK,GAAcA,EAAW6B,OAC3BwI,GAAUjf,OAAOC,KAAK2U,EAAW6B,OAGnC,MAyDMyI,IACJ9iB,EAAAA,EAAAA,KAAA,OAAK0I,MAAO,CAAEqa,UAAW,SAAU5Y,UAAW,IAAK9J,UACjDL,EAAAA,EAAAA,KAACgjB,EAAAA,IAAM,MAIX,IAAKxK,EACH,OAAIyH,EACK6C,GAGF,KAGT,MAAM5Z,GACJ2Y,GAAgBpe,OAAS,EACrBoe,GAAgBA,GAAgBpe,OAAS,GACzC+U,EAAW1X,KAEXmiB,GAAkB,CACtBtd,EACA6U,GACA,CAAC7U,EAAY6S,EAAW1X,MAAMwH,KAAK,MAE/B4a,IAAkBnb,EAAAA,EAAAA,GAAcpC,EAAY,CAChDoB,EAAAA,GAAWoc,yBACXpc,EAAAA,GAAWE,iBAEPmc,IAAarb,EAAAA,EAAAA,GAAckb,GAAiB,CAChDlc,EAAAA,GAAWmV,sBACXnV,EAAAA,GAAWE,iBAGPoc,IAAqBtb,EAAAA,EAAAA,GACzBkb,GACA,CACElc,EAAAA,GAAWuc,wBACXvc,EAAAA,GAAWwc,wBACXxc,EAAAA,GAAWwU,eACXxU,EAAAA,GAAWE,iBAEb,GAEIuc,IAAazb,EAAAA,EAAAA,GAAckb,GAAiB,CAChDlc,EAAAA,GAAW0c,qBAEPC,IAAsB3b,EAAAA,EAAAA,GAAckb,GAAiB,CACzDlc,EAAAA,GAAW4c,yBACX5c,EAAAA,GAAW6c,yBACX7c,EAAAA,GAAW8c,sBACX9c,EAAAA,GAAWwU,eACXxU,EAAAA,GAAWE,iBAEP6c,IAAe/b,EAAAA,EAAAA,GAAckb,GAAiB,CAClDlc,EAAAA,GAAWgd,cACXhd,EAAAA,GAAWwU,iBAEPyI,IAAYjc,EAAAA,EAAAA,GAChB,CAACpC,EAAY6U,GAAa,CAAC7U,EAAY6S,EAAW1X,MAAMwH,KAAK,MAC7D,CAACvB,EAAAA,GAAWkd,mBAGd,IAAIC,IAA8BC,EAAAA,EAAAA,IAAkB/T,GAAUoK,IAE9D,MAAM4J,GAAqB,CACzB,CACEC,OAAQA,MACN7E,EAAAA,EAAAA,GAAehgB,EAAUmG,EAAYC,EAAe4S,EAAW,EAEjE5X,MAAO,WACPU,WAAYkX,EAAWwJ,mBAAqB8B,GAC5Cha,MAAM9J,EAAAA,EAAAA,KAACskB,EAAAA,IAAY,IACnBnjB,QAAS2iB,GACL,wBACArZ,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAWgd,cAAehd,EAAAA,GAAWwU,gBACtC,yBAGR,CACE8I,OAAQA,KA7HVlE,GAAsB,EA8HL,EAEfvf,MAAO,QACPU,WAAYkX,EAAWwJ,mBAAqB8B,GAC5Cha,MAAM9J,EAAAA,EAAAA,KAACukB,EAAAA,IAAS,IAChBpjB,QAAS2iB,GACL,mBACArZ,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAWgd,cAAehd,EAAAA,GAAWwU,gBACtC,sBAGR,CACE8I,OAAQA,KACNhD,GAAe,EAAK,EAEtBzgB,MAAO,UACPU,WACIkX,EAAWwJ,kBACG,SAAfkC,KAA0BJ,GAC7Bha,MAAM9J,EAAAA,EAAAA,KAACwkB,EAAAA,IAAW,IAClBrjB,QAAS2iB,GACL,qBACArZ,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAWgd,cAAehd,EAAAA,GAAWwU,gBACtC,wBAGR,CACE8I,OAAQA,KACN5D,GAAiB,EAAK,EAExB7f,MAAO,aACPU,UACGye,IACAzG,KACCd,EAAWwJ,mBACZkB,IACmB,KAApBjM,EACFnN,MAAM9J,EAAAA,EAAAA,KAACykB,EAAAA,IAAa,IACpBtjB,QAAS+hB,GACLnD,EACE,wCACA,4EACFtV,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAWoc,yBAA0Bpc,EAAAA,GAAWE,gBACjD,+CAGR,CACEod,OA5LuBK,KACzBrE,GAAsB,EAAK,EA4LzBzf,MAAO,YACPU,UACGgY,KACCd,EAAWwJ,mBACZqB,IACmB,KAApBpM,IACC8I,EACHjW,MAAM9J,EAAAA,EAAAA,KAAC2kB,EAAAA,IAAa,IACpBxjB,QAASkiB,GACLtD,EACE,uCACA,iFACFtV,EAAAA,EAAAA,IACE,CACE1D,EAAAA,GAAWuc,wBACXvc,EAAAA,GAAWwc,wBACXxc,EAAAA,GAAWwU,eACXxU,EAAAA,GAAWE,gBAEb,2CAGR,CACEod,OAAQA,KACN9D,GAAgB,EAAK,EAEvB3f,MAAO,OACPU,WACIkX,EAAWwJ,kBAAwC,KAApB/K,IAA2BmM,GAC9DtZ,MAAM9J,EAAAA,EAAAA,KAAC4kB,EAAAA,IAAQ,IACfzjB,QAASiiB,GACL,6BACA3Y,EAAAA,EAAAA,IACE,CACE1D,EAAAA,GAAWmV,sBACXnV,EAAAA,GAAWuU,sBACXvU,EAAAA,GAAWwU,eACXxU,EAAAA,GAAWE,gBAEb,4BAGR,CACEod,OAAQA,KACN1D,GAAoB,EAAK,EAE3B/f,MAAO,UACPU,UACGgY,KACCd,EAAWwJ,kBACO,KAApB/K,IACCuM,GACH1Z,MAAM9J,EAAAA,EAAAA,KAACmd,EAAAA,IAAe,IACtBhc,QAASqiB,GACL,qBACA/Y,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAW0c,oBACZ,sBAGR,CACEY,OAAQA,KACN7kB,GACEwJ,EAAAA,EAAAA,IAAuB,CACrBC,QAAS3C,EACT4C,WAAYA,KAEf,EAEHtI,MAAO0F,EAAe,uBAAyB,0BAC/CwD,MAAM9J,EAAAA,EAAAA,KAAC6kB,EAAAA,IAAY,IACnBvjB,UACGgY,KACCd,EAAWrC,YAAwC,SAA1BqC,EAAWrC,cACrCuN,GACHviB,QAASuiB,GACLlL,EAAWrC,YAAwC,SAA1BqC,EAAWrC,WAClC,iCACA,IACF1L,EAAAA,EAAAA,IACE,CACE1D,EAAAA,GAAW4c,yBACX5c,EAAAA,GAAW6c,yBACX7c,EAAAA,GAAW8c,sBACX9c,EAAAA,GAAWwU,eACXxU,EAAAA,GAAWE,gBAEb,yCAgBV,OACE3G,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CACN6f,GAAsB1H,IACrBxY,EAAAA,EAAAA,KAAC8kB,EAAAA,QAAS,CACRpY,KAAMwT,EACNxM,qBA1RgBqR,KACtB/D,EAAiB,MACjBb,GAAsB,EAAM,EAyRtBxa,WAAYA,EACZqf,WAAYjE,GAAiBvI,IAGhC4H,GAAsB5H,IACrBxY,EAAAA,EAAAA,KAACilB,EAAY,CACXvY,KAAM0T,EACN1M,qBA7SqBwR,IAC3B7E,GAAsB,GAClB6E,GACF1lB,GAASijB,EAAAA,EAAAA,KAAqB,GAChC,EA0SMvZ,WAAYsR,GACZ7G,WAAY6E,EACZ7S,WAAYA,IAGfmR,IACC9W,EAAAA,EAAAA,KAACmlB,GAAY,CACXrO,WAAYA,EACZC,eAAgBpR,EAChBsQ,eAAgBrQ,EAChBiR,2BApSkBuO,IACxBjE,GAAc,GAEViE,GAAsC,KAApBnO,EACpB+I,GAAa,IAEbxgB,GAAS6lB,EAAAA,EAAAA,KAAmB,IAC5B7lB,GAAS8lB,EAAAA,EAAAA,IAAmB,KAC5B9lB,GAASijB,EAAAA,EAAAA,KAAqB,IAChC,EA4RMzL,eAAgBsC,EAAmBtC,OAAiBtT,EACpDuT,gBAAiBA,IAGpBuJ,GAAiBhI,IAChBxY,EAAAA,EAAAA,KAACulB,GAAiB,CAChB7Y,KAAM8T,EACN9M,qBAlRqB8R,IAC3B/E,GAAiB,GACb+E,GACFhmB,GAASijB,EAAAA,EAAAA,KAAqB,GAChC,EA+QMvZ,WAAYsP,EAAW1X,MAAQ,GAC/B6E,WAAYA,EACZ6S,WAAYA,IAGf4I,GAAe5I,IACdxY,EAAAA,EAAAA,KAACylB,EAAAA,QAAgB,CACf/Y,KAAM0U,EACNzb,WAAYA,EACZ6S,WAAYA,EACZkN,eAAgBA,KACdrE,GAAe,EAAM,IAI1Bf,GAAgB9H,IACfxY,EAAAA,EAAAA,KAAC2lB,GAAS,CACRvmB,UAAWkhB,EACX3a,WAAYA,EACZ6S,WAAYA,EACZa,iBArTkBuM,IACxBrF,GAAgB,GACZqF,GACFpmB,GAASijB,EAAAA,EAAAA,KAAqB,GAChC,IAoTG/B,GAAoBlI,IACnBxY,EAAAA,EAAAA,KAAC6lB,GAAa,CACZnJ,YAAagE,EACb9D,WAAYjX,EACZgX,YAAanE,EAAW1X,MAAQ,GAChC2b,4BAtTmBmJ,IACzBjF,GAAoB,GAChBiF,GACFpmB,GAASijB,EAAAA,EAAAA,KAAqB,GAChC,IAqTGjB,IAAgBhJ,IACfxY,EAAAA,EAAAA,KAAC8lB,GAAkB,CACjBpZ,KAAM8U,GACNtC,WAnVc6G,KACpBtE,IAAgB,EAAM,EAmVhBjH,YAAaA,GACb7U,WAAYA,EACZC,cAAeA,EACf4S,WAAYA,IAIfyH,GACCjgB,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,SAAEyiB,MAEXxiB,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF1I,GAAI,CACF,wBAAyB,CACvBwD,QAAS,OACTE,WAAY,SACZ,cAAe,CACbyE,MAAO,GACPC,OAAQ,GACRyD,SAAU,GACVQ,UAAW,KAGf,yBAA0B,CACxBtF,WAAY,SACZwF,aAAc,WACdD,SAAU,SACV5I,WAAY,SACZkI,WAAY,IAEd,qBAAsB,CACpBuY,cAAe,cAEjB,qBAAsB,CACpBjY,QAAS,SACTpD,aAAc,GACdE,SAAU,KAEZxK,SAAA,EAEFL,EAAAA,EAAAA,KAACimB,EAAAA,IAAW,CACV/lB,OACEI,EAAAA,EAAAA,MAAA,OAAKmI,UAAW,qBAAqBpI,SAAA,CAClCiP,EAAoBpG,IAAc,IAAI,IACvClJ,EAAAA,EAAAA,KAAA,QAAMyI,UAAW,sBAAsBpI,SAAE6I,QAG7Cgd,MAAO9B,MAETpkB,EAAAA,EAAAA,KAACgM,EAAAA,EAAc,CACb7K,QACE6iB,GACI,IACAvZ,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAWkd,kBACZ,sBAEP5jB,UAEDL,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,CAAE+I,eAAgB,SAAUvF,QAAS,QAAShF,UAElDL,EAAAA,EAAAA,KAACqb,EAAAA,EAAe,CACdG,SAAU,CACR7V,EACA6U,GACA,CAAC7U,EAAY6S,EAAW1X,MAAMwH,KAAK,MAErC/E,OAAQ,CAACwD,EAAAA,GAAWkd,kBACpBpI,WAAY,CAAEva,UAAU,GAAOjB,UAE/BL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,uBACJiJ,MAAM9J,EAAAA,EAAAA,KAACmmB,EAAAA,IAAU,IACjBC,aAAc,QACdC,WAAS,EACTnkB,QAAS,YACTC,QAASA,KACPgf,GAAc,EAAK,EAErB7f,SACsB,KAApB2V,GAA0BuB,EAAWwJ,iBAEvCngB,GAAI,CACFmI,MAAO,oBACPtE,OAAQ,SAEV9E,MAAK,SAAAkE,OAA+B,KAApBmS,EAAyB,WAAa,aAK9DjX,EAAAA,EAAAA,KAACsmB,EAAAA,IAAY,CAACxc,MAAM9J,EAAAA,EAAAA,KAACumB,EAAAA,IAAc,IAAK3lB,MAAO,iBAC/CN,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC9B,UAAW,kBAAkBpI,SAAA,EAChCL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,WACRL,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,OAAK0I,MAAO,CAAE8d,aAAc,cAAenmB,SAAE6I,QAE1B,KAApB+N,IACC3W,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC9B,UAAW,kBAAkBpI,SAAA,EAChCL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,iBACRL,EAAAA,EAAAA,KAAA,SACCiX,MAGL3W,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC9B,UAAW,kBAAkBpI,SAAA,EAChCL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,WACRL,EAAAA,EAAAA,KAAA,UACCymB,EAAAA,EAAAA,IAAU,GAAD3hB,OAAI0T,EAAWsH,MAAQ,SAElCtH,EAAWrC,YACgB,SAA1BqC,EAAWrC,YACS,KAApBc,IACE3W,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC9B,UAAW,kBAAkBpI,SAAA,EAChCL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,eACRL,EAAAA,EAAAA,KAAA,SACCihB,EAASxd,OAAO,WAA6B,IAApBwd,EAASxd,OAAe,IAAM,GAAG,IAAE,KAC5DijB,EAAAA,EAAAA,IAAapF,MAGC,KAApBrK,IACC3W,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC9B,UAAW,kBAAkBpI,SAAA,EAChCL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,oBACRL,EAAAA,EAAAA,KAAA,SA3MqB2mB,KAC/B,MAAMC,EAAc,IAAI3V,KAClB4V,EAAe,IAAI5V,KAAK0V,GAExBG,EAAUF,EAAYG,UAAYF,EAAaE,UAE/CC,GAAaC,EAAAA,EAAAA,IAAYH,EAAS,MAExC,MAA6B,KAAtBE,EAAW3kB,OAAa,GAAAyC,OAAMkiB,EAAU,QAAS,UAAU,EAoMvDE,CAAwB1O,EAAWoH,eAAiB,QAGzDtf,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC9B,UAAW,kBAAkBpI,SAAA,EAChCL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,WACRL,EAAAA,EAAAA,KAAA,SACCwY,EAAW2O,MAAQ,UAEtB7mB,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC9B,UAAW,kBAAkBpI,SAAA,EAChCL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,WACRL,EAAAA,EAAAA,KAAA,SACoB,IAAnB6iB,GAAQpf,OACL,MACAof,GAAQ5a,KAAI,CAACyT,EAAQvT,KAEjB7H,EAAAA,EAAAA,MAAA,QAAAD,SAAA,CACGqb,EAAO,IAAE/C,IAAIH,EAAW,QAAD1T,OAAU4W,GAAU,IAC3CvT,EAAQ0a,GAAQpf,OAAS,EAAI,KAAO,KAAE,UAAAqB,OAFpBqD,EAAMgB,mBAOrCnJ,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CAAC9B,UAAW,kBAAkBpI,UAChCL,EAAAA,EAAAA,KAACqb,EAAAA,EAAe,CACd9X,OAAQ,CACNwD,EAAAA,GAAWqgB,yBACXrgB,EAAAA,GAAWwU,gBAEbC,SAAU7V,EAAWtF,UAErBC,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,iBACRL,EAAAA,EAAAA,KAAA,SACCwY,EAAWqH,kBAAoB,KAAO,cAI7C7f,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CAAC9B,UAAW,kBAAkBpI,UAChCL,EAAAA,EAAAA,KAACqb,EAAAA,EAAe,CACd9X,OAAQ,CACNwD,EAAAA,GAAWuc,wBACXvc,EAAAA,GAAWwU,gBAEbC,SAAU7V,EAAWtF,UAErBC,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,uBACRL,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,QAAMyI,UAAW,kBAAkBpI,UAChCmY,EAAWrC,YAAcqC,EAAWrC,YACnCnW,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,SACNmY,EAAWhE,eACRgE,EAAWhE,eAAe1E,cAC1B,oBAad0I,EAAWwJ,mBACX1hB,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAACsmB,EAAAA,IAAY,CAAC1lB,MAAO,WAAYkJ,MAAM9J,EAAAA,EAAAA,KAACqnB,EAAAA,IAAY,OACpDrnB,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CAAC9B,UAAW,kBAAkBpI,SAC/BmY,GAAcpI,IACbpQ,EAAAA,EAAAA,KAACsnB,EAAc,CAAClX,SAAUA,KACxB,eAML,EClsBf,GA7D2BjR,IAMC,IANA,iBAC1BooB,EAAgB,WAChB5hB,EAAU,WACV6hB,EAAU,YACVC,EAAW,iBACXpO,GACoBla,EACpB,MAAMK,GAAWC,EAAAA,EAAAA,OACVioB,EAAgBC,IAAqB/nB,EAAAA,EAAAA,WAAkB,GA0B9D,OACEI,EAAAA,EAAAA,KAAC6X,GAAAA,EAAa,CACZ3X,MAAK,uBACL4X,YAAa,UACbC,OAAQ0P,EACRxP,UAAWyP,EACXvnB,WAAWH,EAAAA,EAAAA,KAAC4nB,EAAAA,IAAW,IACvB1P,UA/BmB2P,KACrBF,GAAkB,GAElBplB,EAAAA,EAAI+T,QACDwR,iBAAiBniB,EAAY,CAC5BjG,QAAQ8I,EAAAA,EAAAA,IAAgBgf,GACxBrR,WAAYoR,EAAiBpR,YAAc,KAE5CzT,MAAK,KACJilB,GAAkB,GAClBtO,GAAiB,GACjB7Z,GACEuoB,EAAAA,EAAAA,IAAuB,CACrBroB,OAAQ8nB,EACR7T,WAAY4T,IAEf,IAEF1kB,OAAO4T,IACNjX,GAASsD,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAe0T,EAAIzT,SACjD2kB,GAAkB,EAAM,GACxB,EAWFK,mBAAoB,CAClB9lB,QAAS,YACTZ,SAAUomB,GAEZroB,QAASA,KACPga,GAAiB,EAAM,EAEzBf,qBACEhY,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC1J,GAAG,2BAA0BR,SAAA,CAAC,qCACAL,EAAAA,EAAAA,KAAA,UACjCA,EAAAA,EAAAA,KAAA,KAAAK,SAAImnB,IAAe,KAACxnB,EAAAA,EAAAA,KAAA,SAAM,qBAC1BA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,KAAAK,SAAIknB,EAAiBpR,aAAe,QAGxC,ECjCN,GArC4BhX,IAA0C,IAAzC,KAAE8C,GAAiC9C,EAC1D8oB,EAAU,OACV3J,EAAU,GAEd,OAAQrc,GACN,IAAK,OACHgmB,EAAU,UACV3J,EAAU,eACV,MACF,IAAK,UACH2J,EAAU,UACV3J,EAAU,UACV,MACF,QACE2J,EAAU,UACV3J,EAAU,kBAGd,OACEte,EAAAA,EAAAA,KAAA,QACE0I,MAAO,CACLsF,gBAAiBia,EACjBla,QAAS,QACT1I,QAAS,eACT+E,MAAO,OACPU,WAAY,OACZD,SAAU,GACVoC,aAAc,EACdrE,WAAY,SACZlD,OAAQ,UACRrF,SAEDie,GACI,ECHL4J,GAAoB/iB,EAAAA,GAAOC,KAAIjG,IAAgB,IAAf,MAAE+Z,GAAO/Z,EAC7C,MAAO,CACL,WAAY,CACVgpB,QAAS,MACT9iB,QAAS,QACTkI,SAAU,WACVvD,MAAO,MACPC,OAAQ,mBACR+D,gBAAiB2K,IAAIO,EAAO,cAAe,WAC3CkP,KAAM,QAER,yBAA0B,CACxB5W,aAAa,GAAD1M,OAAK6T,IAAIO,EAAO,cAAe,WAAU,cACrDnL,QAAS,SACTrI,OAAQ,oBACRiD,OAAQ,UACR,YAAa,CACXyB,MAAO,YAGX,uBAAwB,CACtB1E,OAAQ,oBACR,sBAAuB,CACrBsI,gBAAiB2K,IAAIO,EAAO,gBAAiB,WAC7C,UAAW,CACTmP,kBAAmB1P,IAAIO,EAAO,gBAAiB,cAIrD,sBAAuB,CACrBrO,SAAU,GACVC,WAAY,OACZzF,QAAS,OACTE,WAAY,SACZ,iBAAkB,CAChByE,MAAO,GACPC,OAAQ,GACRyD,SAAU,GACVQ,UAAW,GACX5D,YAAa,KAGjB,qBAAsB,CACpByY,UAAW,QACX,WAAY,CACVtV,WAAY,WAGhB,eAAgB,CACd5C,SAAU,OACVnF,OAAQ,QACRkD,WAAY,SACZwF,aAAc,WACdka,SAAU,MACVna,SAAU,UAEZ,iBAAkB,CAChB7D,YAAa,OACbO,SAAU,GACVT,MAAO,WAET,4BAA6B,CAC3B,qBAAsB,CACpB,WAAY,CACVqD,WAAY,SAIlB,4BAA6B,CAC3B,WAAY,CACVpI,QAAS,QAEX,yBAA0B,CACxB0I,QAAS,UACTrI,OAAQ,GAEV,uBAAwB,CACtBA,OAAQ,EACR,sBAAuB,CACrBsI,gBAAiB,cACjB,UAAW,CACTqa,kBAAmB1P,IAAIO,EAAO,gBAAiB,cAIrD,sBAAuB,CACrBrO,SAAU,GACV,iBAAkB,CAChBxF,QAAS,SAGb,iBAAkB,CAChB+I,aAAc,WACdka,SAAU,MACVna,SAAU,SACVvF,WAAY,UAEd,qBAAsB,CACpBvD,QAAS,OACT0F,cAAe,UAEjB,iBAAkB,CAChB1F,QAAS,SAGd,IA8KH,GA3KwB8T,IAeC,IAfA,SACvBoP,EAAQ,YACRC,EAAW,WACXC,EAAU,UACVC,EAAS,UACTC,EAAS,QACTC,EAAO,QACPC,EAAO,WACPC,EAAU,UACVC,EAAS,UACTC,EAAS,YACTC,EAAW,MACX9gB,EAAK,IACL+gB,EAAG,MACHxgB,GACiByQ,EACjB,MAAMgQ,EAAiBX,EAAYxG,iBAE7BoH,EAAqB,CACzB,CACEtf,MAAM9J,EAAAA,EAAAA,KAACwkB,EAAAA,IAAW,IAClBH,OAAQ2E,EACR7nB,QAAS,WAEX,CACE2I,MAAM9J,EAAAA,EAAAA,KAACskB,EAAAA,IAAY,IACnBD,OAAQyE,EACR3nB,QAAS,yBAEX,CACE2I,MAAM9J,EAAAA,EAAAA,KAACukB,EAAAA,IAAS,IAChBF,OAAQwE,EACR1nB,QAAS,sBAEX,CACE2I,MAAM9J,EAAAA,EAAAA,KAAC4nB,EAAAA,IAAW,IAClBvD,OAAQ0E,EACR5nB,QAAS,yBAIb,IAAIkoB,EAA8C,KAE9Cb,EAAYxG,iBACdqH,EAAO,UACEb,EAAY7I,UACrB0J,EAAO,UAC6B,SAA3Bb,EAAYrS,aACrBkT,EAAO,QAGT,IAAI1C,EAAe2C,EAAAA,GAASC,MAQ5B,OANIf,EAAY5I,gBACd+G,EAAe2C,EAAAA,GAASE,QACtBhB,EAAY5I,iBAKd5f,EAAAA,EAAAA,KAACkoB,GAAiB,CAAA7nB,UAChBL,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CACHqZ,WAAS,EACTtS,UAAW,UACXtG,QAASA,KACP8mB,EAAYT,EAAY,EAG1B9f,MAAOA,EAAMrI,UAEbL,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJ6G,UAAc,oBAAmB3D,OAAA,IAAI2jB,EAAa,WAAa,IAAKpoB,UAEpEC,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CACHC,MAAI,EACJC,IAAE,EACF6G,UAAS,uBAAA3D,OACP0jB,EAAYxG,iBAAmB,UAAY,IAC1C3hB,SAAA,EAEHL,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGvB,UAChBC,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CAACqZ,WAAS,EAAA1a,SAAA,EACbC,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CAACC,MAAI,EAACC,IAAE,EAAC6nB,GAAI,EAAGhhB,UAAW,mBAAmBpI,SAAA,CAChDqoB,IACC1oB,EAAAA,EAAAA,KAAC0pB,EAAAA,IAAQ,CACPjU,QAASkT,EACT9nB,GAAE,UAAAiE,OAAY0jB,EAAYrS,YAC1BrV,KAAI,UAAAgE,OAAY0jB,EAAYrS,YAC5BnV,SAAWC,IACTA,EAAE0oB,kBACFf,EAAQJ,EAAYrS,YAAc,GAAG,EAEvCxV,MAAO6nB,EAAYrS,YAAc,GACjC7U,SAAUknB,EAAYxG,iBACtBngB,GAAI,CACFmI,MAAO,aAIZsF,EAAoBiZ,GAAU,GAAM,KAAGpgB,EAAMgB,YAC9CnJ,EAAAA,EAAAA,KAAA,QAAMyI,UAAW,cAAcpI,SAC5BgpB,IAAQrpB,EAAAA,EAAAA,KAAC4pB,GAAmB,CAAC3nB,KAAMonB,UAGxCrpB,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAI6nB,GAAI,EAAGhhB,UAAW,kBAAkBpI,SACpD+oB,EAAmBnhB,KAAI,CAAC4hB,EAAQ1hB,KAE7BnI,EAAAA,EAAAA,KAACwK,EAAAA,IAAO,CACNrJ,QAAS0oB,EAAO1oB,QAAQd,UAKxBL,EAAAA,EAAAA,KAAC8pB,EAAAA,GAAU,CACThK,KAAM,QACNjf,GAAE,kBAAAiE,OACA+kB,EAAO1oB,QAAO,KAAA2D,OACZqD,EAAMgB,YACVV,UAAc,UAAS3D,OAAA,IACrBqkB,EAAiB,iBAAmB,IAEtC7nB,SAAU6nB,EACVhnB,QAAUlB,IACRA,EAAE0oB,kBACGR,EAGHloB,EAAEsU,iBAFFsU,EAAOxF,OAAOmE,EAGhB,EAEF3mB,GAAI,CACFmM,gBAAiB,UACjBf,aAAc,OACdjD,MAAO,OACPC,OAAQ,OACR8D,QAAS,MACT,cAAe,CACb/D,MAAO,OACPC,OAAQ,SAEV5J,SAEDwpB,EAAO/f,QACG,kBAAAhF,OAjCX+kB,EAAO1oB,QAAO,KAAA2D,OACZqD,EAAMgB,uBAuCtBnJ,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAI6G,UAAW,YAAYpI,SACZ,SAA3BmoB,EAAYrS,WAAwBqS,EAAYrS,WAAa,OAEhE7V,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAI6G,UAAW,kBAAkBpI,SAAA,EAC9CC,EAAAA,EAAAA,MAAA,QAAMmI,UAAW,cAAcpI,SAAA,EAC7BL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,mBAAwB,IAC/BsmB,EAAaoD,SAAS,wCAEzBzpB,EAAAA,EAAAA,MAAA,QAAMmI,UAAW,cAAcpI,SAAA,EAC7BL,EAAAA,EAAAA,KAAA,UAAAK,SAAQ,UAAc,KAAEomB,EAAAA,EAAAA,IAAU,GAAD3hB,OAAI0jB,EAAY1I,MAAQ,kBA9F5DoJ,IAoGW,ECnLxB,GAhHiC/pB,IAKF,IALG,2BAChC0X,EAA0B,WAC1BC,EAAU,eACVC,EAAc,eACdd,GACuB9W,EACvB,MAAMK,GAAWC,EAAAA,EAAAA,OACVyX,EAAe8S,IAAoBpqB,EAAAA,EAAAA,WAAkB,IACrDqqB,EAAaC,IAAkBtqB,EAAAA,EAAAA,UAAiB,KAChD6X,EAAkBC,IAAuB9X,EAAAA,EAAAA,WAAkB,GAE5DgU,GAAkB1N,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,cAAcwN,kBAGrC+D,GACJ5P,EAAAA,EAAAA,GACE,CAACgP,GACD,CAAChQ,EAAAA,GAAW6Q,kCACiB,gBAAX,OAAfhE,QAAe,IAAfA,OAAe,EAAfA,EAAiBa,MA2BxB,IAzBA1U,EAAAA,EAAAA,YAAU,KACJmX,GACF3U,EAAAA,EAAI+T,QACD6T,aAAapT,EAAgB,CAC5BrX,OAAQuW,EACRmU,sBAAsB,EACtBC,OAAQ5S,IAET/U,MAAK,KACJmU,GAA2B,EAAK,IAEjChU,OAAO4T,IACNjX,GAASsD,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAe0T,EAAIzT,SACjDgnB,GAAiB,EAAM,GAE7B,GACC,CACD9S,EACAL,EACArX,EACAyW,EACAc,EACAU,KAGGxB,EACH,OAAO,KAMT,OACEjW,EAAAA,EAAAA,KAAC6X,GAAAA,EAAa,CACZ3X,MAAK,8BACL4X,YAAa,SACbC,OAAQjB,EACR3W,WAAWH,EAAAA,EAAAA,KAACgY,EAAAA,IAAiB,IAC7BC,UAAWf,EACXgB,UAXoBC,KACtB6R,GAAiB,EAAK,EAWpB3qB,QAASA,IAAMwX,GAA2B,GAC1CmR,mBAAoB,CAClB1mB,SAA0B,iBAAhB2oB,GAAkC/S,GAE9CoB,qBACEhY,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CAAC,oEAC0D,KAClEL,EAAAA,EAAAA,KAAA,KAAAK,UAAIgY,EAAAA,EAAAA,IAAgBpC,KAAoB,MAAEjW,EAAAA,EAAAA,KAAA,SACzC2X,IACC3X,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPL,EAAAA,EAAAA,KAAA,OACE0I,MAAO,CACLyB,UAAW,IACX9J,UAEFL,EAAAA,EAAAA,KAACwV,EAAAA,IAAM,CACL5U,MAAO,yBACP8U,gBAAiB,CAAC,MAAO,MACzBD,QAASgC,EACT9W,MAAO,oBACPE,GAAG,oBACHC,KAAK,oBACLE,SAAWC,IACTyW,GAAqBD,EAAiB,EAExCc,YAAY,UAKpBvY,EAAAA,EAAAA,KAAA,SAAM,4BACkBA,EAAAA,EAAAA,KAAA,KAAAK,SAAG,iBAAgB,gBAC3CL,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGvB,UAChBL,EAAAA,EAAAA,KAACU,EAAAA,IAAQ,CACPG,GAAG,eACHC,KAAK,gBACLE,SAAWiL,IACTie,EAAeje,EAAM/K,OAAOP,MAAM,EAEpCC,MAAM,GACND,MAAOspB,UAKf,ECFN,GA3GqB9qB,IAMgB,IANf,2BACpB0X,EAA0B,WAC1BC,EAAU,eACVC,EAAc,iBACduT,EAAgB,eAChBrU,GAC6B9W,EAC7B,MAAMK,GAAWC,EAAAA,EAAAA,OACVyX,EAAe8S,IAAoBpqB,EAAAA,EAAAA,WAAkB,IACrD6X,EAAkBC,IAAuB9X,EAAAA,EAAAA,WAAkB,GAE5DgU,GAAkB1N,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,cAAcwN,kBAGrC+D,GACJ5P,EAAAA,EAAAA,GACE,CAACgP,GACD,CAAChQ,EAAAA,GAAW6Q,kCACiB,gBAAX,OAAfhE,QAAe,IAAfA,OAAe,EAAfA,EAAiBa,MA2CxB,OApCA1U,EAAAA,EAAAA,YAAU,KACR,GAAImX,EAAe,CACjB,MAAMqT,EAAyBD,EAAiBriB,KAAK0a,IAC5C,CACLnb,KAAMyO,EACN0M,UAAWA,EACXvK,WAAW,MAIXmS,EAAuB9mB,OAAS,GAClClB,EAAAA,EAAI+T,QACDkU,sBAAsBzT,EAAgBwT,EAAwB,CAC7DE,cAAc,EACdJ,OAAQ5S,IAET/U,MAAK,KACJsnB,GAAiB,GACjBnT,GAA2B,EAAK,IAEjChU,OAAO4T,IACNjX,GAASsD,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAe0T,EAAIzT,SACjDgnB,GAAiB,EAAM,GAG/B,IACC,CACD9S,EACAL,EACAE,EACAd,EACAqU,EACA7S,EACAjY,IAGG8qB,GAKHtqB,EAAAA,EAAAA,KAAC6X,GAAAA,EAAa,CACZ3X,MAAK,2BACL4X,YAAa,SACbC,OAAQjB,EACR3W,WAAWH,EAAAA,EAAAA,KAACgY,EAAAA,IAAiB,IAC7BC,UAAWf,EACXgB,UAnDoBC,KACtB6R,GAAiB,EAAK,EAmDpB3qB,QArDYA,IAAMwX,GAA2B,GAsD7CyB,qBACEhY,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CAAC,gDACsCiqB,EAAiB7mB,OAAQ,IAAI,iBAC9DzD,EAAAA,EAAAA,KAAA,UAAAK,SAAS4V,IAAwB,IAC7C0B,IACC3X,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPL,EAAAA,EAAAA,KAAA,OACE0I,MAAO,CACLyB,UAAW,IACX9J,UAEFL,EAAAA,EAAAA,KAACwV,EAAAA,IAAM,CACL5U,MAAO,yBACP8U,gBAAiB,CAAC,MAAO,MACzBD,QAASgC,EACT9W,MAAO,oBACPE,GAAG,oBACHC,KAAK,oBACLE,SAAWC,IACTyW,GAAqBD,EAAiB,EAExCc,YAAY,cAjCnB,IAwCL,E,gBC3EN,MAAMmH,GAA0B,CAC9BC,WAAW,EACXC,cAAe,GACfC,kBAAmB,GACnB/e,KAAM,GACN0T,eAAgB,GAChBI,qBAAsB,GACtBkL,KAAM,EACNzF,KAAM,CAAC,EACPlE,gBAAYzS,GA6cd,GA1c0BvE,IAGM,IAHL,cACzByG,EAAa,WACbD,GACwBxG,EACxB,MAAMK,GAAWC,EAAAA,EAAAA,MAEXirB,GAAiBxkB,EAAAA,EAAAA,KACpBC,GAAoBA,EAAMC,cAAcskB,iBAErCC,GAAkBzkB,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,cAAcukB,kBAErC1T,GAAkB/Q,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,cAAc6Q,kBAGrCqC,GAAmBpT,EAAAA,EAAAA,IAAYqT,EAAAA,KAC9B2G,EAAoBC,IAAyBvgB,EAAAA,EAAAA,WAAkB,IAC/D4Y,EAAYoI,IAAiBhhB,EAAAA,EAAAA,UAA8B,OAC3DmhB,EAAeC,IAAoBphB,EAAAA,EAAAA,UAA8B,OACjEqhB,EAAUC,IAAethB,EAAAA,EAAAA,UAAyB,KAClDgrB,EAAoBC,IAAyBjrB,EAAAA,EAAAA,WAAkB,IAC/DioB,EAAgBiD,IAAqBlrB,EAAAA,EAAAA,UAC1C,OAEKmrB,EAAWC,IAAgBprB,EAAAA,EAAAA,UAAiB,SAC5CwhB,EAAaC,IAAkBzhB,EAAAA,EAAAA,WAAkB,IACjDqrB,EAAsBC,IAC3BtrB,EAAAA,EAAAA,WAAkB,IACburB,EAAeC,IAAoBxrB,EAAAA,EAAAA,WAAkB,IACrDyrB,EAAeC,IAAoB1rB,EAAAA,EAAAA,UAAmB,KACtD2rB,EAAkBC,IAAuB5rB,EAAAA,EAAAA,WAAkB,GAGlE,IAAIiiB,EAA4B,GAC5BrJ,GAAcA,EAAW1X,OAC3B+gB,EAAkBrJ,EAAW1X,KAAKyG,MAAM,OAG1CxH,EAAAA,EAAAA,YAAU,KACH4qB,GAAoBnS,GACvBhZ,GAAS6lB,EAAAA,EAAAA,KAAmB,GAC9B,GACC,CAACsF,EAAiBnS,EAAYhZ,KAEjCO,EAAAA,EAAAA,YAAU,KACJ4qB,GAAqC,KAAlB/kB,GACrBrD,EAAAA,EAAI+T,QACD2L,YAAYtc,EAAY,CACvBjG,OAAQkG,EACRsc,cAAe5I,IAEhB5W,MAAMC,IACL,MAAMwf,EAASxJ,IAAIhW,EAAIyf,KAAM,UAAW,IAElCqJ,GAAuBpT,EAAAA,EAAAA,IAAgBzS,GAGvC8lB,EAAmBvJ,EAAOje,QAC7BvC,GAAuBA,EAAKb,OAAS2qB,IAGpCnS,GACFsH,EACE8K,EAAiBnnB,MAAMwd,GAAqBA,EAAGpC,aAC7CD,IAEJwB,EAAYwK,KAEZ9K,EAAc8K,EAAiB,IAC/BxK,EAAY,KAGd1hB,GAAS6lB,EAAAA,EAAAA,KAAmB,GAAO,IAEpCxiB,OAAO4T,IACNjX,GAASsD,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAe0T,EAAIzT,SACjDxD,GAAS6lB,EAAAA,EAAAA,KAAmB,GAAO,GAEzC,GACC,CAACsF,EAAiBhlB,EAAYC,EAAepG,EAAU8Z,IAE1D,MAUMqS,EAAehqB,IACnBqf,EAAiBrf,GAVjBwe,GAAsB,EAWT,EAGTyL,EAAiBjqB,IACrBqf,EAAiBrf,GACjB0f,GAAe,EAAK,EAGhBwK,EAAiBlqB,IACrBmpB,EAAkBnpB,GAClBkpB,GAAsB,EAAK,EAGvBiB,EAAkBnqB,KACtB6d,EAAAA,EAAAA,GAAehgB,EAAUmG,EAAYC,EAAejE,EAAK,EAGrDoqB,EAAiBpqB,IACrBnC,GAAS8lB,EAAAA,EAAAA,IAAmB3jB,EAAKwU,YAAc,IAAI,EAG/C6V,GAAkB/K,EAAS/c,QAAQ+nB,KACnCA,EAAQ9V,YACH8V,EAAQ9V,WAAWlS,SAASymB,KAoCjCwB,GAAajL,EAASnd,QAAO,CAACC,EAAawe,IAC3CA,EAAUzC,KACL/b,EAAMwe,EAAUzC,KAElB/b,GACN,GAEHioB,GAAgBG,MAAK,CAACC,EAAGnT,KACvB,GACO,SADC8R,EAEJ,OAAIqB,EAAEtM,MAAQ7G,EAAE6G,KACVsM,EAAEtM,KAAO7G,EAAE6G,MACL,EAENsM,EAAEtM,KAAO7G,EAAE6G,KACN,EAEF,EAEF,EACT,CACE,MAAMuM,EAAQ,IAAIpb,KAAKmb,EAAExM,eAAiB,IAAImH,UACxCuF,EAAQ,IAAIrb,KAAKgI,EAAE2G,eAAiB,IAAImH,UAE9C,OAAIsF,EAAQC,EACH,EAELD,EAAQC,GACF,EAEH,CAAC,CACZ,IAGF,MAAMC,GAAkBtV,IACtB,GAAIoU,EAAcpnB,SAASgT,GAAkB,CAC3C,MAAMuV,EAAgBnB,EAAcnnB,QACjCqL,GAAYA,IAAY0H,IAK3B,YAFAqU,EAAiBkB,EAGnB,CAEA,MAAMC,EAAa,IAAIpB,GACvBoB,EAAWC,KAAKzV,GAEhBqU,EAAiBmB,EAAW,EAiC9B,OACEnsB,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CACN6f,GAAsB1H,IACrBxY,EAAAA,EAAAA,KAAC8kB,EAAAA,QAAS,CACRpY,KAAMwT,EACNxM,qBAzJgBqR,KACtB/D,EAAiB,MACjBb,GAAsB,GACtBkB,GAAe,EAAM,EAuJf1b,WAAYA,EACZqf,WAAYjE,GAAiBvI,IAGhCoS,GAAsBpS,GAAcqP,IACnC7nB,EAAAA,EAAAA,KAAC2sB,GAAkB,CACjBlF,YAAamD,EACbjlB,WAAYA,EACZ4hB,iBAAkBM,EAClBL,WAAYhP,EAAW1X,MAAQ,GAC/BuY,iBAhImBuM,IACzBiF,GAAsB,GACtBC,EAAkB,MAEdlF,IACFpmB,GAAS6lB,EAAAA,EAAAA,KAAmB,IAC5B7lB,GAASijB,EAAAA,EAAAA,KAAqB,IAChC,IA4HGrB,GAAe5I,IACdxY,EAAAA,EAAAA,KAACylB,EAAAA,QAAgB,CACf/Y,KAAM0U,EACNzb,WAAYA,EACZ6S,WAAY,CACV1X,KAAM0X,EAAW1X,MAAQ,GACzBqV,WACE4K,GAAiBA,EAAc5K,WAC3B4K,EAAc5K,WACd,OACN2J,KAAMiB,GAAiBA,EAAcjB,KAAOiB,EAAcjB,KAAO,EACjE8M,aAAc,GACdhN,cAAepH,EAAWoH,eAAiB,IAE7C8F,eAAgBA,KACdrE,GAAe,EAAM,IAI1B4J,IACCjrB,EAAAA,EAAAA,KAAC6sB,GAAgB,CACf/V,WAAYmU,EACZpU,2BA/IuBiW,IAC7B5B,GAAwB,GAEpB4B,IACFttB,GAAS6lB,EAAAA,EAAAA,KAAmB,IAC5B7lB,GAAS8lB,EAAAA,EAAAA,IAAmB,KAC5B9lB,GAASijB,EAAAA,EAAAA,KAAqB,IAChC,EAyIM1L,eAAgBpR,EAChBsQ,eAAgBrQ,IAGnB2lB,IACCvrB,EAAAA,EAAAA,KAAC+sB,GAAsB,CACrBhW,eAAgBpR,EAChBsQ,gBAAgBoC,EAAAA,EAAAA,IAAgBzS,GAChCkR,WAAYyU,EACZjB,iBAAkBe,EAClBxU,2BAhJuBmW,IAC7BxB,GAAoB,GAEhBwB,IACFxtB,GAAS6lB,EAAAA,EAAAA,KAAmB,IAC5B7lB,GAAS8lB,EAAAA,EAAAA,IAAmB,KAC5B9lB,GAASijB,EAAAA,EAAAA,KAAqB,IAC9B6I,EAAiB,IACnB,KA2IEhrB,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CACHqZ,WAAS,EACTlZ,GAAI,CACFmI,MAAO,OACP+D,QAAS,GACT,4BAA6B,CAC3BG,UAAW,MAEb7N,SAAA,EAEAmY,IACAxY,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGvB,UAChBL,EAAAA,EAAAA,KAACitB,EAAAA,IAAW,MAIfzU,IACClY,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGvB,UAChBL,EAAAA,EAAAA,KAACktB,EAAkB,CACjBvnB,WAAYA,EACZC,eAAeyS,EAAAA,EAAAA,IAAgBzS,GAC/BC,gBAAgB,OAGpB7F,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,CACF0L,SAAU,WACV,mBAAoB,CAClBjD,YAAa,GACb,4BAA6B,CAC3BA,YAAa,IAGjB,CAAC,sBAADxF,OAAuBU,EAAAA,IAAYikB,GAAE,QAAQ,CAC3C,YAAa,CACXpkB,QAAS,UAGbhF,UAEFL,EAAAA,EAAAA,KAACmtB,EAAAA,IAAW,CACVrjB,MACE9J,EAAAA,EAAAA,KAAA,QACE0I,MAAO,CACLrD,QAAS,QACT8E,UAAW,SACX9J,UAEFL,EAAAA,EAAAA,KAAC6kB,EAAAA,IAAY,CAACnc,MAAO,CAAEsB,MAAO,GAAIC,OAAQ,QAG9C/J,MAAK,GAAA4E,OACH+c,EAAgBpe,OAAS,EACrBoe,EAAgBA,EAAgBpe,OAAS,GACzC+U,EAAW1X,KAAI,aAErBssB,UACE9sB,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAAA,QAAMyI,UAAW,gBAAgBpI,UAC/BC,EAAAA,EAAAA,MAAA,UAAAD,SAAA,CACG4gB,EAASxd,OAAO,WACI,IAApBwd,EAASxd,OAAe,GAAK,IAAI,qBAGtCzD,EAAAA,EAAAA,KAAA,QAAMyI,UAAW,gBAAgBpI,UAC/BL,EAAAA,EAAAA,KAAA,UAAAK,UAASqmB,EAAAA,EAAAA,IAAawF,WAI5BmB,SACE/sB,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAACgM,EAAAA,EAAc,CAAC7K,QAAS,2BAA2Bd,UAClDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,2BACJsB,QAASA,KACPipB,GAAkBD,EAAc,EAElCrhB,MAAM9J,EAAAA,EAAAA,KAACstB,EAAAA,GAAkB,IACzBprB,QAASipB,EAAgB,aAAe,UACxCziB,MAAO,CAAE4B,YAAa,OAGzB6gB,IACCnrB,EAAAA,EAAAA,KAACgM,EAAAA,EAAc,CAAC7K,QAAS,2BAA2Bd,UAClDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,2BACJsB,QAASA,KACPqpB,GAAoB,EAAK,EAE3B1hB,MAAM9J,EAAAA,EAAAA,KAACmmB,EAAAA,IAAU,IACjBjkB,QAAS,YACTwG,MAAO,CAAE4B,YAAa,GACtBhJ,SAAmC,IAAzB+pB,EAAc5nB,YAI9BzD,EAAAA,EAAAA,KAACgM,EAAAA,EAAc,CAAC7K,QAAS,8BAA8Bd,UACrDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,qBACJsB,QAASA,KACP+oB,GAAwB,EAAK,EAE/BphB,MAAM9J,EAAAA,EAAAA,KAACutB,EAAAA,IAAoB,IAC3BrrB,QAAS,YACTwG,MAAO,CAAE4B,YAAa,IACtBhJ,SAAU2f,EAASxd,QAAU,OAGjCzD,EAAAA,EAAAA,KAACoB,EAAAA,IAAM,CACLP,GAAI,UACJQ,QAAS,CACP,CAAET,MAAO,OAAQD,MAAO,QACxB,CACEC,MAAO,OACPD,MAAO,SAGXA,MAAOoqB,EACPnqB,MAAO,UACPI,SAAWyS,IACTuX,EAAavX,EAAS,EAExB+Z,iBAAe,OAIrBC,cAAc,OAGlBztB,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,CACF6rB,SAAU,EACVzjB,OAAQ,qBACRkE,SAAU,OACV,CAAC,sBAADrJ,OAAuBU,EAAAA,IAAYikB,GAAE,QAAQ,CAC3Cxf,OAAQ,MAEV5J,SAEDmY,EAAWrC,YAAwC,SAA1BqC,EAAWrC,aAEnCnW,EAAAA,EAAAA,KAAC2tB,GAAAA,GAAI,CACHjlB,MAAO,CACLsB,MAAO,QAET4jB,eAAgB,CACd5jB,MAAO,OACPse,SAAU,QAEZte,MAAO,EACPC,OAAQ,IACR4jB,SAAU7B,GAAgBvoB,OAC1BqqB,UAAW,IACXC,YAnPI5U,IAMC,IANA,IACnB+P,EAAG,MACH/gB,EAAK,YACL6lB,EAAW,UACXC,EAAS,MACTvlB,GACayQ,EACb,MAAM+U,EAAUjN,EAASxd,OAAS0E,EAClC,OACEnI,EAAAA,EAAAA,KAACmuB,GAAe,CACdzlB,MAAOA,EAEP6f,UAAoB,OAAV/P,QAAU,IAAVA,OAAU,EAAVA,EAAY1X,OAAQ,GAC9B0nB,YAAawD,GAAgB7jB,GAC7BA,MAAO+lB,EACPpF,WAAYgD,EACZ/C,UAAW8C,EACXhD,QAAS8C,EACT3C,UAAW4C,EACX3C,YAAa8C,EACbtD,WAAYxR,IAAoB+U,GAAgB7jB,GAAOgO,WACvDuS,UAAWyC,EACXvC,QAAS2D,GACT5D,UAAW0C,EAAcpnB,SACvB+nB,GAAgB7jB,GAAOgO,YAAc,KAblC+S,EAeL,cAgOO,EC1fFkF,GAAqBC,IAChC,GAAIA,EAAOvtB,KAAK6O,SAAS,KACvB,MAAO,GAGT,MAAM2e,EAAWhF,EAAAA,GAASC,MACpBgF,EAAajF,EAAAA,GAASE,QAAQ6E,EAAOzO,eAO3C,OAJE0O,EAASE,QAAQD,EAAY,QAC7BD,EAASE,QAAQD,EAAY,UAC7BD,EAASE,QAAQD,EAAY,QAGvB,UAANzpB,OAAiBypB,EAAWxE,SAAS,UAGhCwE,EAAWxE,SAAS,gCAAgC,EAGhD0E,GAAoBJ,GAC3BA,EAAOvtB,KAAK6O,SAAS,OAAS0e,EAAOvO,KAChC,KAEF2G,EAAAA,EAAAA,IAAUiI,OAAOL,EAAOvO,OASpB6O,GAAkB,CAC7B,CACE/tB,MAAO,OACPguB,WAAY,OACZC,eAAgBvf,EAChBwf,YAAY,GAEd,CACEluB,MAAO,gBACPguB,WAAY,gBACZC,eAAgBT,GAChBW,kBAAkB,EAClBD,YAAY,GAEd,CACEluB,MAAO,OACPguB,WAAY,OACZC,eAAgBJ,GAChBM,kBAAkB,EAClB/kB,MAAO,IACP8kB,YAAY,IAIHE,GAAoB,CAC/B,CACEpuB,MAAO,OACPguB,WAAY,OACZC,eAAgBvf,EAChBwf,YAAY,GAEd,CACEluB,MAAO,cACPguB,WAAY,gBACZC,eAAgBT,GAChBW,kBAAkB,EAClBD,YAAY,GAEd,CACEluB,MAAO,OACPguB,WAAY,OACZC,eAAgBJ,GAChBM,kBAAkB,EAClB/kB,MAAO,IACP8kB,YAAY,GAEd,CACEluB,MAAO,UACPguB,WAAY,cACZC,eAvD8B1oB,GACzBA,EAAQ,MAAQ,KAuDrB6D,MAAO,K,gBChEX,MAwMA,GAxMyBilB,KACvB,MAAMzvB,GAAWC,EAAAA,EAAAA,MACXyvB,GAASC,EAAAA,EAAAA,KACTppB,GAAWC,EAAAA,EAAAA,OAEVopB,EAAeC,IAAoBzvB,EAAAA,EAAAA,UAExC,QACK0vB,EAAkBC,IAAuB3vB,EAAAA,EAAAA,UAAiB,QAE3D+F,EAAaupB,EAAOvpB,YAAc,GAElC6pB,GAActpB,EAAAA,EAAAA,KACjBC,GAAoBA,EAAMC,cAAcqpB,oBAGrCC,GAAoBxpB,EAAAA,EAAAA,KACvBC,GAAoBA,EAAMC,cAAcspB,oBAGrCC,GAAWzpB,EAAAA,EAAAA,IAAY0pB,GAAAA,IACvBC,IAAmB,OAARF,QAAQ,IAARA,IAAAA,EAAU1rB,SAAS,wBAE9BgC,GAAgBC,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMC,cAAcC,OAAOJ,gBAE5C6pB,GAAU5pB,EAAAA,EAAAA,KAAaC,GAAoBA,EAAMC,cAAc0pB,UAC/DC,GAAgB7pB,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMC,cAAc2pB,gBAErCC,GAAkB9pB,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,cAAc4pB,kBAErCC,GAAkB/pB,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,cAAc6pB,kBAErCzpB,GAAgBN,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMM,OAAOD,gBAG9B0pB,GAAqBnoB,EAAAA,EAAAA,GAAcpC,EAAY,CACnDoB,EAAAA,GAAWopB,eACXppB,EAAAA,GAAWqpB,qBAiBPC,EAdkBP,EAAQ5rB,QAAQ+U,IACtC,GAAsB,KAAlB8W,EACF,OAAO,EAGP,OADmB9W,EAAEnY,KAAKgP,cACXpL,QAAQqrB,EAAcjgB,gBAAkB,CAKzD,IAIuBqc,MAAKmE,EAAAA,EAAAA,IAAgBhB,IAE9C,IAAIiB,EAA8B,GAGhCA,EADoB,QAAlBnB,EACQiB,EAEAA,EAAQG,UAGpB,MA8BMC,EAA8B,CAClC,CACExuB,KAAM,OACNd,QAAS,OACTgB,QAlCcksB,IAA0B,IAADqC,EACzC,MAAMC,EAAYtC,EAAOvtB,MAAQ,GAC3B8vB,EAAO,YAAA9rB,OAAea,GAAUb,OACpC6rB,EAAS,IAAA7rB,QAAO0D,EAAAA,EAAAA,IAAgBmoB,IAAU,KAIxCnqB,GAA6B,QAAZkqB,EAACrC,EAAOvtB,YAAI,IAAA4vB,GAAXA,EAAa/gB,SAAS,MAS5CnQ,GAASqxB,EAAAA,EAAAA,IAAmB,KAE5B9qB,EAAS6qB,GAEJpqB,IACHhH,GAASsxB,EAAAA,EAAAA,KAAqB,IAC9BtxB,GAAS6lB,EAAAA,EAAAA,KAAmB,KAE9B7lB,GACEuxB,EAAAA,EAAAA,IAAsB,GAADjsB,OAChB6rB,EAAS,GAAA7rB,QAAM0D,EAAAA,EAAAA,IAAgBmoB,IAAU,QAlB9CnR,EAAAA,EAAAA,GACEhgB,EACAmG,EAAW,GAADb,QACP0D,EAAAA,EAAAA,IAAgBmoB,IACnBtC,EAgBH,EAOC2C,YAAY,IA2ChB,IAAI3S,EACD6R,GAAuB1pB,EAInB,yBAAA1B,OAEEmB,EAAsD,GAAtC,sCALnBwE,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAWopB,eAAgBppB,EAAAA,GAAWqpB,oBACvC,+BAMJH,IACF5R,EACE,uFAGJ,IAAI4S,EAAoB,sBAMxB,OAJIpB,IACFoB,EAAoB,wBAIpBjxB,EAAAA,EAAAA,KAACkxB,EAAAA,IAAS,CACRC,YAAaV,EACbW,QAASnrB,EAAgB+oB,GAAoBL,GAC7C1W,UAAWyX,EACX2B,WAAW,UACXC,QAAQ,OACRxB,QAASS,EACTU,kBAAmBA,EACnB5F,cAAe2E,EACfzjB,SAAW/F,OAAoC9C,EAnDxBzC,IACzB,MAAMswB,EAAUtwB,EAAEC,OACZP,EAAQ4wB,EAAQ5wB,MAChB8U,EAAU8b,EAAQ9b,QAExB,IAAI+b,EAAqB,IAAIxB,GAY7B,OAVIva,EAEF+b,EAAS9E,KAAK/rB,GAGd6wB,EAAWA,EAASttB,QAAQqL,GAAYA,IAAY5O,IAEtDnB,GAASqxB,EAAAA,EAAAA,IAAmBW,IAC5BhyB,GAASuxB,EAAAA,EAAAA,IAAsB,OAExBS,CAAQ,EAmCbC,mBAAoBpT,EACpBqT,YAAa,CACXC,YAAarC,EACbsC,iBAAkBxC,EAClByC,YA3EcC,IAClB,MAAMC,EAAmBpZ,IAAImZ,EAAU,gBAAiB,QACxDvC,EAAoBuC,EAASE,QAC7B3C,EAAiB0C,GACjBvyB,GAASyyB,EAAAA,EAAAA,KAAqB,GAAM,GAyElCC,YAtEmBC,KAGrB,GAFA3yB,GAASuxB,EAAAA,EAAAA,IAAsB,OAE3Bf,EAAgBvsB,SAAW8sB,EAAQ9sB,OAErC,YADAjE,GAASqxB,EAAAA,EAAAA,IAAmB,KAI9B,MAAMW,EAAWjB,EAAQtoB,KAAKtG,GAASA,EAAKb,OAC5CtB,GAASqxB,EAAAA,EAAAA,IAAmBW,GAAU,EA8DpCY,SAAUjzB,IAAgB,IAADkzB,EAAA,IAAd,MAAElqB,GAAOhJ,EAClB,OAAkB,QAAlBkzB,EAAI9B,EAAQpoB,UAAM,IAAAkqB,GAAdA,EAAgBC,YACX,UAGF,EAAE,EAEXzwB,GAAI,CACFqM,UAAWshB,EAAc,OAAS,WAEpC+C,cAAY,GACZ,E,gBCzNN,MAgBA,GAhBwBC,KACtB,MAAMhzB,GAAWC,EAAAA,EAAAA,MAEXswB,GAAgB7pB,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMC,cAAc2pB,gBAE3C,OACE/vB,EAAAA,EAAAA,KAACyyB,GAAAA,EAAS,CACR1xB,YAAa,+CACbC,SAAWL,IACTnB,GAASkzB,EAAAA,EAAAA,IAAiB/xB,GAAO,EAEnCA,MAAOovB,GACP,E,gBC8FN,MAAM4C,IAAwB3tB,EAAAA,EAAAA,GAC5BC,EAAAA,MAAW,IAAM,mCAEb6f,IAAY9f,EAAAA,EAAAA,GAChBC,EAAAA,MAAW,IAAM,2CAEb2tB,IAAe5tB,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,IAAM,mCAC7CwgB,IAAmBzgB,EAAAA,EAAAA,GACvBC,EAAAA,MAAW,IAAM,2CAGb4tB,GAAe,CACnB9lB,YAAa,EACbE,aAAc,EACdH,YAAa,cACbgmB,QAAS,QAGLC,GAAiB,CACrB/lB,YAAa,SACbgB,gBAAiB,cACjBlB,YAAa,WAGTkmB,GAAiB,CACrBhmB,YAAa,SACbgB,gBAAiB,cACjBlB,YAAa,WAinCf,GA9mCoBmmB,KAAO,IAADC,EACxB,MAAM1zB,GAAWC,EAAAA,EAAAA,MACXyvB,GAASC,EAAAA,EAAAA,KACTppB,GAAWC,EAAAA,EAAAA,MACX4X,GAAWuV,EAAAA,EAAAA,MAEXltB,GAAgBC,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMC,cAAcC,OAAOJ,gBAE5CmtB,GAAiBltB,EAAAA,EAAAA,KACpBC,GAAoBA,EAAMC,cAAcC,OAAO+sB,iBAE5C9sB,GAAeJ,EAAAA,EAAAA,KAClBC,GAAoBA,EAAMC,cAAcE,eAErC+sB,GAAcntB,EAAAA,EAAAA,KACjBC,GAAoBA,EAAMC,cAAcitB,cAErC7D,GAActpB,EAAAA,EAAAA,KACjBC,GAAoBA,EAAMC,cAAcqpB,oBAErC6D,GAAwBptB,EAAAA,EAAAA,KAC3BC,GAAoBA,EAAMC,cAAcktB,wBAErC5D,GAAoBxpB,EAAAA,EAAAA,KACvBC,GAAoBA,EAAMC,cAAcspB,oBAErC6D,GAAartB,EAAAA,EAAAA,KAChBC,GAAoBA,EAAMC,cAAcmtB,aAErCC,GAAmBttB,EAAAA,EAAAA,KACtBC,GAAoBA,EAAMC,cAAcoiB,cAErCiL,GAAiBvtB,EAAAA,EAAAA,KACpBC,GAAoBA,EAAMC,cAAcqtB,iBAErCC,GAAsBxtB,EAAAA,EAAAA,KACzBC,GAAoBA,EAAMC,cAAcstB,sBAErCC,GAAkBztB,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,cAAcutB,kBAErCzT,GAAqBha,EAAAA,EAAAA,KACxBC,GAAoBA,EAAMC,cAAc8Z,qBAErCkB,GAAclb,EAAAA,EAAAA,KACjBC,GAAoBA,EAAMC,cAAcgb,cAErCrK,GAAiB7Q,EAAAA,EAAAA,KACpBC,GAAoBA,EAAMC,cAAc2Q,iBAErCvQ,GAAgBN,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMM,OAAOD,gBAE9BotB,GAAsB1tB,EAAAA,EAAAA,KACzBC,GAAoBA,EAAMC,cAAcwtB,sBAGrC9D,GAAU5pB,EAAAA,EAAAA,KACbC,IAAe,IAAA0tB,EAAA,OAAwB,QAAnBA,EAAA1tB,EAAMC,qBAAa,IAAAytB,OAAA,EAAnBA,EAAqB/D,UAAW,EAAE,IAGnDgE,GAAgB5tB,EAAAA,EAAAA,IAAY6tB,EAAAA,IAC5BC,GAAa9tB,EAAAA,EAAAA,IAAY+tB,EAAAA,KAExBC,EAAoBC,IAAyBv0B,EAAAA,EAAAA,WAAkB,IAC/Dw0B,GAAcC,KAAmBz0B,EAAAA,EAAAA,WAAkB,IACnD00B,GAASC,KAAc30B,EAAAA,EAAAA,WAAkB,IACzC40B,GAAcC,KAAmB70B,EAAAA,EAAAA,WAAkB,IACnD80B,GAAgBC,KAAqB/0B,EAAAA,EAAAA,WAAkB,IACvDg1B,GAAOC,KAAYj1B,EAAAA,EAAAA,UAA6B,OAChDwQ,GAAUsR,KAAe9hB,EAAAA,EAAAA,UAAc,OACvCk1B,GAAkBC,KAAuBn1B,EAAAA,EAAAA,WAAS,GAEnDo1B,GAAsB/pB,EAAgBuoB,EAAiBvqB,QAEvDtD,GAAaupB,EAAOvpB,YAAc,GAClCsvB,GAAcrX,EAASsX,SAAS3tB,MAAM,YAADzC,OAAaa,GAAU,MAC5DC,GAAuC,IAAvBqvB,GAAYxxB,OAAewxB,GAAY,GAAK,GAE5DE,IAAY9c,EAAAA,EAAAA,IAAgBzS,IAC5BwvB,GAAcD,GAAU5tB,MAAM,KAAKrD,QAAQmxB,GAAoB,KAANA,IAE/D,IAAI/xB,GAAa,CAACqC,IACdyvB,GAAY3xB,OAAS,IACvBH,GAAaA,GAAWwB,OAAOswB,KAGjC,MAAME,IAAargB,EAAAA,EAAAA,QAAyB,MACtCsgB,IAAetgB,EAAAA,EAAAA,QAAyB,MAExC5R,IAAgB6C,EAAAA,EAAAA,KAAaC,GACjCA,EAAMe,QAAQC,SAAUhB,EAAMe,QAAQC,QAAQC,aAAoB,CAAC,IAG/DN,GAAsB,CAC1BC,EAAAA,GAAWC,cACXD,EAAAA,GAAWE,gBAGPuuB,GAAyBlyB,GAAWgF,KAAK,KACzCmtB,G1BhPsC,SAC5CpyB,EACAC,GAGA,MAOMmyB,EAPwBryB,EAC5BC,EACAC,EAJcE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IASiCM,QAClD,CAACC,EAAe2xB,KACd,MAAMC,EAAoB1yB,EAAgByyB,GAI1C,OAHIC,GACF5xB,EAAI2oB,KAAK,IAAD5nB,OAAK6wB,IAER5xB,CAAG,GAEZ,IAIF,MADyB,IAAI,IAAI6xB,IAAIH,IACbntB,KAAK,IAC/B,C0BuNgCutB,CAC5BxyB,GACAmyB,GACA1uB,IAGIa,GAAwBvE,EAC5BC,GACAmyB,GACA1uB,IAGIgvB,IAAc/tB,EAAAA,EAAAA,GAClB,CAACytB,MAA2B7tB,IAC5B,CAACZ,EAAAA,GAAWgd,cAAehd,EAAAA,GAAWwU,iBAElCwa,IAAYhuB,EAAAA,EAAAA,GAAcpC,GAAY,CAC1CoB,EAAAA,GAAWgd,cACXhd,EAAAA,GAAWwU,eACXxU,EAAAA,GAAW4c,2BAEPK,IAAYjc,EAAAA,EAAAA,GAChB,CAACytB,MAA2B7tB,IAC5B,CAACZ,EAAAA,GAAWkd,mBAER+R,IACJjuB,EAAAA,EAAAA,GACE,CAACytB,MAA2B7tB,IAC5Bb,KACGN,EAEDyvB,IAAwBluB,EAAAA,EAAAA,GAAcpC,GAAY,CACtDoB,EAAAA,GAAWmvB,qBACXnvB,EAAAA,GAAWovB,qBACXpvB,EAAAA,GAAWwU,eACXxU,EAAAA,GAAWE,iBAGP+oB,IAAkB9pB,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,cAAc4pB,kBAerCoG,GAZoBC,MACxB,IAAIC,GAAiB,EACrB,GAA+B,IAA3BtG,GAAgBvsB,OAAc,CAKhC6yB,IAJkBxG,EAAQvrB,MAAMgyB,GACvBA,EAAIz1B,OAAI,GAAAgE,OAAQkrB,GAAgB,KAAQuG,EAAIjE,aAIvD,CACA,OAAOgE,CAAc,EAGMD,GAEvBG,IAAgBC,EAAAA,EAAAA,cAAY,KAChC,MAAMvtB,EAAa8mB,GAAgB,GAC7B0G,GAAcluB,EAAAA,EAAAA,IAAgBU,IAE/B4rB,IAAoB4B,GACvBn0B,EAAAA,EAAI+T,QACDoM,kBAAkB/c,GAAY,CAC7BjG,OAAQg3B,IAETh0B,MAAMC,IACL,IAAIigB,EAAWjK,IAAIhW,EAAIyf,KAAM,iBAAkB,CAAC,GAChD2S,IAAoB,GACpBrT,GAAYkB,EAAS,IAEtB/f,OAAO4T,IACNvP,QAAQlE,MACN,kCACAyT,EACG,OAAHA,QAAG,IAAHA,OAAG,EAAHA,EAAKa,eAEPyd,IAAoB,EAAK,GAE/B,GACC,CAACpvB,GAAYqqB,GAAiB8E,MAEjC/0B,EAAAA,EAAAA,YAAU,KACJ4F,KAAeywB,IACjBI,IACF,GACC,CAAC7wB,GAAYqqB,GAAiBwG,GAAeJ,MAEhDr2B,EAAAA,EAAAA,YAAU,KACJkG,GACEmtB,IAAmBztB,IACrBnG,GAASm3B,EAAAA,EAAAA,MAGb,GACC,CAAC1wB,EAAemtB,EAAgBztB,GAAYnG,KAE/CO,EAAAA,EAAAA,YAAU,KACqB,OAAzBw1B,GAAargB,UACfqgB,GAAargB,QAAQ0hB,aAAa,YAAa,IAC/CrB,GAAargB,QAAQ0hB,aAAa,kBAAmB,IACvD,GACC,CAACrB,MAEJx1B,EAAAA,EAAAA,YAAU,KACR,GAA+B,IAA3BiwB,GAAgBvsB,OAAc,CAChC,MAAMyF,EAAa8mB,GAAgB,GAC7B6G,EAAW3tB,EAAWyG,SAAS,KAErC,IAAIuU,GAA8BC,EAAAA,EAAAA,IAAkB/T,GAAUlH,GAG5DyrB,KADiB,SAAfzQ,IAAyB4R,KAO3BrB,MADEqB,IAAgBe,GAKtB,MACEpC,IAAgB,GAChBE,IAAkB,EACpB,GACC,CAAC3E,GAAiB8F,GAAa1lB,MAElCrQ,EAAAA,EAAAA,YAAU,KACH60B,IAAUpuB,GACbjE,EAAAA,EAAI+T,QACDwgB,eAAenxB,IACfjD,MAAMC,IACL,IAAIo0B,EAAY,KAEZp0B,EAAIyf,KAAKwS,QACXmC,EAAYp0B,EAAIyf,MAGlByS,GAASkC,EAAU,IAEpBl0B,OAAO4T,IACNvP,QAAQlE,MACN,+BACAyT,EAAIzT,MAAMg0B,iBAEZnC,GAAS,KAAK,GAEpB,GACC,CAACD,GAAOjvB,GAAYa,KAEvBzG,EAAAA,EAAAA,YAAU,KACJiwB,GAAgBvsB,OAAS,EAC3BjE,GAASsxB,EAAAA,EAAAA,KAAqB,IAKH,IAA3Bd,GAAgBvsB,QACU,OAA1B6vB,GACC5D,GAEDlwB,GAASsxB,EAAAA,EAAAA,KAAqB,GAChC,GACC,CAACd,GAAiBsD,EAAuB9zB,EAAUkwB,KAEtD3vB,EAAAA,EAAAA,YAAU,KACHu0B,KACH90B,GAASy3B,EAAAA,EAAAA,KAAqB,IAC9B1C,IAAW,GACb,GACC,CAACD,GAAS90B,EAAU+0B,MAGvBx0B,EAAAA,EAAAA,YAAU,MACH2vB,IAAqBoE,GAAmBttB,GAC3CjE,EAAAA,EAAI+T,QACD0d,WAAWruB,IACXjD,MAAMC,IACLnD,GAASy3B,EAAAA,EAAAA,KAAqB,IAC9Bz3B,GAAS03B,EAAAA,EAAAA,IAAcv0B,EAAIyf,MAAM,IAElCvf,OAAO4T,IACNjX,GAASy3B,EAAAA,EAAAA,KAAqB,IAC9Bz3B,GAASsD,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAe0T,IAAM,GAEzD,GACC,CAAC9Q,GAAYmuB,EAAet0B,EAAUgH,EAAekpB,KAIxD3vB,EAAAA,EAAAA,YAAU,KACe,KAAnBgX,GACFxU,EAAAA,EAAI+T,QACD6gB,yBAAyBpgB,GACzBrU,MAAMC,IACLnD,GAAS43B,EAAAA,EAAAA,IAAmBz0B,EAAIyf,MAAM,IAEvCvf,OAAM,KACLrD,GAAS43B,EAAAA,EAAAA,IAAmB,MAAM,GAExC,GACC,CAACrgB,EAAgBvX,IAEpB,MAUM63B,GAAsBp2B,IAC1B,GACQ,OAANA,QACMyC,IAANzC,GACmB,OAAnBA,EAAEC,OAAOo2B,YACU5zB,IAAnBzC,EAAEC,OAAOo2B,MAJX,CAQAr2B,EAAEsU,iBACF,IAAIgiB,EAAmB,GAEvB,IAAK,IAAIlC,EAAI,EAAGA,EAAIp0B,EAAEC,OAAOo2B,MAAM7zB,OAAQ4xB,IACzCkC,EAAS7K,KAAKzrB,EAAEC,OAAOo2B,MAAMjC,IAE/BmC,GAAaD,EAAU,IAEvBt2B,EAAEC,OAAOP,MAAQ,EATjB,CASmB,EAGf62B,IAAef,EAAAA,EAAAA,cACnB,CAACa,EAAeG,KACd,IAAIC,EAAa,GACbnE,IACFmE,EAAanE,EAAW5jB,SAAS,KAAO4jB,EAAaA,EAAa,KAGrDoE,EACbL,EACA3xB,EACA6B,EACAiwB,KAEA,IAAIG,EAAiBva,GACZ,IAAIwa,SAAQ,CAACC,EAASC,KAC3B,IAAIC,EAAS,kBAAAlzB,OAAqBa,EAAU,mBAC5C,MAAM4iB,EAAWlL,EAAKvc,KAEhBm3B,EAAW,IAAIC,KAAK,CAAC7a,GAAO,CAAEpb,KAAMob,EAAKpb,OAE/C,IAAIy0B,EAAc,GAElB,MAAMyB,EAAWxf,IAAI0E,EAAM,OAAQ,IAC7B+a,EAAyBzf,IAAI0E,EAAM,qBAAsB,IAE/D,IAAIgb,EAAqBZ,EACzB,MAAMa,GAAKC,EAAAA,EAAAA,IAAO,GAGD,KAAbJ,EACFE,EAAqBF,EACe,KAA3BC,IAETC,EAAqBD,GAGvB,IAAII,EAAa,GAEjB,GAAa,KAAThxB,GAAsC,KAAvB6wB,EAA2B,CAC5C,MAAMI,EAAkBJ,EACrB9wB,MAAM,KACNc,MAAM,GAAI,GACVC,KAAK,KAEFowB,EAAYlxB,EAAKmI,SAAS,KAAOnI,EAAKa,MAAM,GAAI,GAAKb,EAE3DgxB,EAAU,GAAA1zB,OAAM4zB,GAAS5zB,OACtB4zB,EAAU/oB,SAAS,MACA,KAApB8oB,GACCA,EAAgBE,WAAW,KAExB,GADA,KACE7zB,OACL2zB,GAAe3zB,QACf2zB,EAAgB9oB,SAAS,MACE,KAA3B8oB,EAAgBp2B,SAAkBmF,EAAKmI,SAAS,KAC7C,IACA,GAER,CAGEqoB,EADiB,KAAfQ,EACO,GAAA1zB,OAAMkzB,EAAS,YAAAlzB,QAAW0D,EAAAA,EAAAA,IACjCgwB,EAAajQ,IAGN,GAAAzjB,OAAMkzB,EAAS,YAAAlzB,QAAW0D,EAAAA,EAAAA,IAAgB+f,IAGrDmO,GAAcluB,EAAAA,EAAAA,IAAgBgwB,GAE9B,MAAMI,GAAWpwB,EAAAA,EAAAA,IAAgB,GAAD1D,OAC3Ba,EAAU,KAAAb,OAAI4xB,EAAW,KAAA5xB,QAAI,IAAImM,MAAO8V,UAAS,KAAAjiB,OAAI+zB,KAAKC,WAG/D,IAAIC,EAAM,IAAIC,eACdD,EAAIrsB,KAAK,OAAQsrB,GAAW,GACxBxxB,GACFuyB,EAAIE,iBAAiB,cAAe,KAItC,MAAMC,EAAmB5B,EAAM7zB,OAAS,EACxC,IAAI4a,EAAY,6CAAAvZ,OACdo0B,EAAmB,IAAM,GAAE,KAG7B,MAAMC,EAAqB,CACzB,IAAK,+BAGPJ,EAAIK,iBAAkB,EACtBL,EAAIM,OAAS,WAEX,GAAIN,EAAI9vB,QAAU,KAAO8vB,EAAI9vB,OAAS,IACpCzJ,GAAS85B,EAAAA,EAAAA,IAAeV,IACxBd,EAAQ,CAAE7uB,OAAQ8vB,EAAI9vB,UAEtBswB,EAAAA,EAAAA,IAAYjB,OACP,CAEL,GAAIa,EAAcJ,EAAI9vB,QACpBoV,EAAe8a,EAAcJ,EAAI9vB,aAC5B,GAAI8vB,EAAIS,SACb,IACE,MAAM/iB,EAAMgjB,KAAKjnB,MAAMumB,EAAIS,UAC3Bnb,EAAe5H,EAAIugB,eACrB,CAAE,MAAO/1B,GACPod,EAAe,sBACjB,CAGF7e,GACEk6B,EAAAA,EAAAA,IAAW,CACTC,WAAYf,EACZgB,IAAKvb,KAGT0Z,EAAO,CAAE9uB,OAAQ8vB,EAAI9vB,OAAQqV,QAASD,KAEtCkb,EAAAA,EAAAA,IAAYjB,EACd,CACF,EAEAS,EAAIpB,OAAOkC,iBAAiB,SAAS,KACnC9B,EAAO1Z,GACP7e,GACEk6B,EAAAA,EAAAA,IAAW,CACTC,WAAYf,EACZgB,IAAK,8BAGH,IAGRb,EAAIpB,OAAOkC,iBAAiB,YAAa5tB,IACvC,MAAM6tB,EAAWjB,KAAKkB,MAAsB,IAAf9tB,EAAM+tB,OAAgB/tB,EAAMguB,OAEzDz6B,GACE06B,EAAAA,EAAAA,IAAe,CACbP,WAAYf,EACZkB,SAAUA,IAEb,IAGHf,EAAIoB,QAAU,KACZpC,EAAO1Z,GACP7e,GACEk6B,EAAAA,EAAAA,IAAW,CACTC,WAAYf,EACZgB,IAAK,8BAGH,EAERb,EAAIqB,UAAY,KACO,IAAjB9C,EAAM7zB,QACRjE,GAASyyB,EAAAA,EAAAA,KAAqB,GAChC,EAEF8G,EAAIsB,QAAU,KACZ76B,GAAS86B,EAAAA,EAAAA,IAAmB1B,GAAU,EAGxC,MAAM2B,EAAW,IAAIC,cACH92B,IAAd2Z,EAAKyC,OACPya,EAASE,OAAOpd,EAAKyC,KAAK3W,WAAY8uB,EAAU1P,IAChDmS,EAAAA,EAAAA,IAAyBpC,EAAIS,GAC7Bv5B,GACEm7B,EAAAA,EAAAA,IAAa,CACXrC,KACA3yB,aACAi1B,MAAM,EACNjB,WAAYf,EACZiC,WAAY,EACZn7B,OAAO,GAADoF,QAAKuT,EAAAA,EAAAA,IAAgBqe,IAAY5xB,OAAGyjB,GAC1CtmB,KAAM,SACN64B,gBAAgB,EAChBC,QAAQ,EACRC,WAAW,EACX3c,aAAc,OAGlB4c,EAAAA,EAAAA,IAAoB3C,EAAIiC,GAC1B,IAIJ,MAAMW,EAA0B,GAEhC17B,GAAS27B,EAAAA,EAAAA,OACT,IAAK,IAAI9F,EAAI,EAAGA,EAAIiC,EAAM7zB,OAAQ4xB,IAAK,CACrC,MAAMhY,EAAOia,EAAMjC,GACnB6F,EAAmBxO,KAAKkL,EAAcva,GACxC,CACAwa,QAAQuD,WAAWF,GAAoBx4B,MAAM24B,IAC3C,MAAMC,EAASD,EAAQn3B,QACpBie,GAA6B,aAAlBA,EAAOlZ,SAErB,GAAIqyB,EAAO73B,OAAS,EAAG,CACrB,MAAM83B,EAAaL,EAAmBz3B,OAChC+3B,EACJN,EAAmBz3B,OAAS63B,EAAO73B,OAC/BgT,EAA4B,CAChC4H,aAAc,4CACd/G,cAAc,kBAADxS,OAAoB02B,EAAoB,KAAA12B,OAAIy2B,IAE3D/7B,GAASsD,EAAAA,EAAAA,IAAqB2T,GAChC,CAEAjX,GAASyyB,EAAAA,EAAAA,KAAqB,GAAM,GACpC,EAGJ0F,CAAOL,EAAO3xB,GAAY+xB,EAAYD,EAAW,GAEnD,CAAC9xB,GAAYnG,EAAU+zB,EAAY/sB,IAG/Bi1B,IAAShF,EAAAA,EAAAA,cACZiF,IACC,GAAIA,GAAiBA,EAAcj4B,OAAS,GAAKuyB,GAAW,CAC1D,IAAI2F,EAAwBD,EAAc,GAAGl0B,KAEzCo0B,EAAeF,EAEfjG,GAAsBhyB,OAAS,IACjCm4B,EAAeF,EAAcx3B,QAAQmZ,IACnC,MAAMwe,EAAW54B,EAAgBoa,EAAKvc,MACtC,OAAO20B,GAAsBxxB,SAAS43B,EAAS,KAI/CD,EAAan4B,QACf+zB,GAAaoE,EAAcD,GAC3Bz0B,QAAQ40B,IAAI,GAADh3B,OACN82B,EAAan4B,OAAM,oCAAAqB,OAAmC42B,EAAcj4B,OAAM,KAC7E+xB,MACG7tB,IAGDi0B,EAAan4B,SAAWi4B,EAAcj4B,QACxCjE,GACEsD,EAAAA,EAAAA,IAAqB,CACnBub,aAAc,wBACd/G,eAAe7M,EAAAA,EAAAA,IACb,CAAC1D,EAAAA,GAAWC,cAAeD,EAAAA,GAAWE,gBACtC,wCAMRzH,GACEsD,EAAAA,EAAAA,IAAqB,CACnBub,aAAc,mCACd/G,eAAe7M,EAAAA,EAAAA,IACb,CAAC1D,EAAAA,GAAWC,cAAeD,EAAAA,GAAWE,gBACtC,sCAKNC,QAAQlE,MACN,8DACAwyB,MACG7tB,IAGT,CACKquB,IACHx2B,GACEsD,EAAAA,EAAAA,IAAqB,CACnBub,aAAc,qBACd/G,eAAe7M,EAAAA,EAAAA,IACb,CAAC1D,EAAAA,GAAWC,cAAeD,EAAAA,GAAWE,gBACtC,qCAIR,GAGF,CAACuwB,MAGG,aAAEuE,GAAY,cAAEC,GAAa,aAAEC,GAAY,aAAEC,KACjDC,EAAAA,EAAAA,IAAY,CACVC,SAAS,EACTX,YAGEY,IAAYC,EAAAA,EAAAA,UAChB,SACKzJ,MACCoJ,GAAelJ,GAAiB,CAAC,KACjCmJ,GAAelJ,GAAiB,CAAC,KAEvC,CAACiJ,GAAcC,KAiBXlc,GAAgBuc,IAGpB,GAFA/8B,GAASuxB,EAAAA,EAAAA,IAAsB,OAC/BvxB,GAASwJ,EAAAA,EAAAA,IAAuB,CAAEC,QAAQ,KACtCumB,GAAyC,OAA1B8D,EAAgC,CAGjD,MACMkJ,GADcnkB,EAAAA,EAAAA,IAAgBzS,IACN2B,MAAM,KAGpCi1B,EAAU/hB,MAEV,IAAIgiB,EAAU,GAEVD,GAAaA,EAAU/4B,OAAS,IAClCg5B,EAAO,GAAA33B,OAAM03B,EAAUl0B,KAAK,KAAI,MAGlCvC,EAAS,YAADjB,OAAaa,GAAU,KAAAb,QAAI0D,EAAAA,EAAAA,IAAgBi0B,IACrD,CAEAj9B,GAASsxB,EAAAA,EAAAA,KAAqB,IAE1ByL,GACF/8B,GAASyyB,EAAAA,EAAAA,KAAqB,GAChC,EAiBF,IAAIyK,GAAcpT,EAAAA,GAASC,MAEb,OAAVyK,QAAU,IAAVA,GAAAA,EAAY2I,gBACdD,GAAcpT,EAAAA,GAASE,QAAQwK,EAAW2I,gBAG5C,MAAMC,IACW,OAAf5M,SAAe,IAAfA,QAAe,EAAfA,GAAiBvsB,SAAU,EACvB,oBAAmB,0GAGnB2gB,GAAqB,CACzB,CACEC,OAAQA,KACN7kB,GAASq9B,EAAAA,EAAAA,IAAiBl3B,IAAY,EAExC/E,MAAO,WACPU,UAAWw0B,IAAeM,GAC1BtsB,MAAM9J,EAAAA,EAAAA,KAACskB,EAAAA,IAAY,IACnBnjB,QAAS20B,GACL8G,IACAnyB,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAWgd,cAAehd,EAAAA,GAAWwU,gBACtC,sCAGR,CACE8I,OAAQA,KACN7kB,GAASs9B,EAAAA,EAAAA,MAAY,EAEvBl8B,MAAO,QACPU,SAC6B,IAA3B0uB,GAAgBvsB,SAAiB+wB,IAAgB4B,GACnDtsB,MAAM9J,EAAAA,EAAAA,KAACukB,EAAAA,IAAS,IAChBpjB,QAASqzB,GAAe,sBAAwB,uBAElD,CACEnQ,OAAQA,KACN7kB,GAASu9B,EAAAA,EAAAA,MAAc,EAEzBn8B,MAAO,UACPU,SAC6B,IAA3B0uB,GAAgBvsB,SAAiBixB,IAAkB0B,GACrDtsB,MAAM9J,EAAAA,EAAAA,KAACwkB,EAAAA,IAAW,IAClBrjB,QAASuzB,GAAiB,wBAA0B,uBAEtD,CACErQ,OAAQA,KACN7kB,GAASw9B,EAAAA,EAAAA,MAAsB,EAEjCp8B,MAAO,mBACPU,SAC6B,IAA3B0uB,GAAgBvsB,SACfusB,GAAgB,GAAGrgB,SAAS,OAC5BsmB,GACHnsB,MAAM9J,EAAAA,EAAAA,KAACi9B,EAAAA,IAAc,IACrB97B,QAC6B,IAA3B6uB,GAAgBvsB,QAAgBusB,GAAgB,GAAGrgB,SAAS,KACxD,sCACA,gCAER,CACE0U,OAAQA,KACN8P,GAAsB,EAAK,EAE7BvzB,MAAO,SACPkJ,MAAM9J,EAAAA,EAAAA,KAACmmB,EAAAA,IAAU,IACjB7kB,UAAW0iB,IAAwC,IAA3BgM,GAAgBvsB,OACxCtC,QAAS6iB,GACL,yBACAvZ,EAAAA,EAAAA,IACE,CAAC1D,EAAAA,GAAWkd,kBACZ,mCAKV,OACE3jB,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CACN6f,GAAsByT,IACrB3zB,EAAAA,EAAAA,KAAC8kB,GAAS,CACRpY,KAAMwT,EACNxM,qBA1IgBqR,KACtBvlB,GAAS2gB,EAAAA,EAAAA,KAAsB,IAC/B3gB,GAAS09B,EAAAA,EAAAA,IAAmB,MAAM,EAyI5Bv3B,WAAYA,GACZqf,WAAY,CACVlkB,KAAM6yB,EAAgB7yB,KACtB8e,cAAe,GACfzJ,WAAYwd,EAAgBxd,cAIjC+d,IACCl0B,EAAAA,EAAAA,KAAC2yB,GAAqB,CACpB7b,WAAYod,EACZnd,eAAgBpR,GAChBqqB,gBAAiBA,GACjBnZ,2BAneoCsmB,IAC1ChJ,GAAsB,GAElBgJ,IACF39B,GAASoD,EAAAA,EAAAA,IAAmB,kCAC5BpD,GAASqxB,EAAAA,EAAAA,IAAmB,KAC5BrxB,GAASyyB,EAAAA,EAAAA,KAAqB,IAChC,EA6dMmL,WAAY5J,IAGfY,KACCp0B,EAAAA,EAAAA,KAAC4yB,GAAY,CACXlmB,KAAM0nB,GACN1gB,qBA1JiB2pB,KACvBhJ,IAAgB,EAAM,EA0JhB1uB,WAAYA,KAGfyb,GAAeuS,IACd3zB,EAAAA,EAAAA,KAACylB,GAAgB,CACf/Y,KAAM0U,EACNzb,WAAYA,GACZ6S,WAAY,CACV1X,KAAM6yB,EAAgB7yB,MAAQ,GAC9B8e,cAAe,GACfzJ,WAAYwd,EAAgBxd,YAAc,GAC1C2J,KAAM6T,EAAgB7T,MAAQ,GAEhC4F,eApKmB4X,KACzB99B,GAAS6hB,EAAAA,EAAAA,KAAe,IACxB7hB,GAAS09B,EAAAA,EAAAA,IAAmB,MAAM,MAqK7BxJ,IACD1zB,EAAAA,EAAAA,KAAC8lB,GAAkB,CACjBpZ,OAAQgnB,EACRxU,WAnIiBqe,KACvB/9B,GAASg+B,EAAAA,EAAAA,IAAuB,MAAM,EAmIhChjB,aAAgD,QAAnC0Y,EAAAQ,EAAoB5yB,KAAKyG,MAAM,YAAI,IAAA2rB,OAAA,EAAnCA,EAAqCzY,QAAS,GAC3D9U,WAAYA,GACZC,cAAeA,GACf4S,WAAY,CACV1X,KAAM4yB,EAAoB5yB,KAC1B8e,cAAe,GACfzJ,WAAYud,EAAoBvd,WAChC2J,KAAM4T,EAAoB5T,QAI/B8T,IACC5zB,EAAAA,EAAAA,KAACy9B,GAAAA,QAAa,CACZp+B,QA7ImBq+B,KACzBl+B,GAASm+B,EAAAA,EAAAA,KAAuB,GAAO,EA6IjCr+B,OAAQqG,GACRvG,UAAWw0B,EACXr0B,eAAc,GAAAuF,OAAKkrB,GAAgB,GAAE,QAIzC1vB,EAAAA,EAAAA,MAACs9B,EAAAA,IAAU,CAAC17B,QAAS,OAAO7B,SAAA,CACzBmG,IACCxG,EAAAA,EAAAA,KAAA,OAAK0I,MAAO,CAAEm1B,cAAe,IAAKx9B,UAChCL,EAAAA,EAAAA,KAACwyB,GAAe,OAGpBxyB,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CAAC/J,aAAW,EAACqB,GAAI,CAAEkM,QAAS,SAAU1N,UACxCL,EAAAA,EAAAA,KAACmtB,EAAAA,IAAW,CACVrjB,MACE9J,EAAAA,EAAAA,KAAA,QAAAK,UACEL,EAAAA,EAAAA,KAAC89B,EAAAA,IAAW,CAACp1B,MAAO,CAAEsB,MAAO,QAGjC9J,MAAOyF,GACPynB,SACG5mB,EAkDG,MAjDFlG,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF1I,GAAI,CACF,mBAAoB,CAClByI,YAAa,GACb,4BAA6B,CAC3BA,YAAa,KAGjBjK,SAAA,EAEFC,EAAAA,EAAAA,MAAA,QAAMmI,UAAW,gBAAgBpI,SAAA,CAAC,mBAEhCL,EAAAA,EAAAA,KAAA,UAAAK,SACa,OAAV2zB,QAAU,IAAVA,GAAAA,EAAY2I,cACTD,GAAY3S,SACV,oCAEF,SAGRzpB,EAAAA,EAAAA,MAAA,QAAMmI,UAAW,gBAAgBpI,SAAA,CAAC,mBAEhCL,EAAAA,EAAAA,KAAA,UAAAK,UAAmB,OAAV2zB,QAAU,IAAVA,OAAU,EAAVA,EAAYvxB,SAAU,QAEhCuxB,IACCh0B,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPC,EAAAA,EAAAA,MAAA,QAAMmI,UAAW,gBAAgBpI,SAAA,CAC9B2zB,EAAWlU,OACV9f,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UAAEqmB,EAAAA,EAAAA,IAAasN,EAAWlU,QAEpCkU,EAAWlU,MAAQ8U,KAClBt0B,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CACN,IAAI,MACFqmB,EAAAA,EAAAA,IAAakO,GAAMA,OAAS,MAGlCZ,EAAWlU,MAAQkU,EAAW3R,QAAU,MAAQ,GAChD2R,EAAW3R,UACV/hB,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CACN2zB,EAAW3R,QAAQ,aACnB2R,EAAW3R,SAAkC,IAAvB2R,EAAW3R,QAC9B,IACA,cASpBgL,SACE/sB,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACLmG,IACAxG,EAAAA,EAAAA,KAACgM,EAAAA,EAAc,CACb7K,QACE40B,GACI,iBACAtrB,EAAAA,EAAAA,IACE,CACE1D,EAAAA,GAAWgd,cACXhd,EAAAA,GAAWwU,eACXxU,EAAAA,GAAW4c,0BAEb,+BAEPtjB,UAEDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,sBACJD,MAAO,SACPkJ,MACE9J,EAAAA,EAAAA,KAAC+9B,EAAAA,IAAK,CAAC3zB,MAAM,QAAQ4zB,SAAO,EAACC,WAAYh4B,EAAc5F,UACrDL,EAAAA,EAAAA,KAACk+B,EAAAA,IAAW,CACVx1B,MAAO,CACLgF,SAAU,GACVQ,UAAW,GACXlE,MAAO,GACPC,OAAQ,GACRE,WAAY,OAKpBjI,QAAS,UACTC,QAASA,KACPkyB,IAAgB,EAAK,EAEvB/yB,UAAW0zB,KAAwBe,QAIzC/1B,EAAAA,EAAAA,KAACgM,EAAAA,EAAc,CAAC7K,QAAS,cAAcd,UACrCL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,uBACJD,MAAO,UACPkJ,MAAM9J,EAAAA,EAAAA,KAACm+B,EAAAA,IAAW,IAClBj8B,QAAS,UACTC,QAASA,KACHmE,EACF9G,GAAS6lB,EAAAA,EAAAA,KAAmB,KAE5B7lB,GAAS4+B,EAAAA,EAAAA,OACT5+B,GAASyyB,EAAAA,EAAAA,KAAqB,IAChC,EAEF3wB,UACEkF,MAEKuB,EAAAA,EAAAA,GAAcpC,GAAY,CACzBoB,EAAAA,GAAWopB,eACXppB,EAAAA,GAAWqpB,sBACPnqB,QAIhBjG,EAAAA,EAAAA,KAAA,SACEiC,KAAK,OACLo8B,UAAQ,EACRC,OACE7I,SAAgD/xB,EAElD1C,SAAUq2B,GACV3uB,MAAO,CAAErD,QAAS,QAClBiM,IAAKgkB,MAEPt1B,EAAAA,EAAAA,KAAA,SACEiC,KAAK,OACLo8B,UAAQ,EACRr9B,SAAUq2B,GACV3uB,MAAO,CAAErD,QAAS,QAClBiM,IAAKikB,MAEPv1B,EAAAA,EAAAA,KAACu+B,EAAiB,CAChB54B,WAAYA,GACZrC,WAAYkyB,GACZrqB,mBAAqBqzB,IACflJ,IAAcA,GAAWpgB,SAC3BogB,GAAWpgB,QAAQupB,QAErBD,GAAW,EAEbpzB,qBAAuBozB,IACjBjJ,IAAgBA,GAAargB,SAC/BqgB,GAAargB,QAAQupB,QAEvBD,GAAW,OAKnB/Q,cAAc,OAGlBntB,EAAAA,EAAAA,MAAA,OACEO,GAAG,yBACCk7B,GAAa,CAAErzB,MAAO,IAAK2zB,MAAch8B,SAAA,EAE7CL,EAAAA,EAAAA,KAAA,YAAWg8B,QACX17B,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF/J,aAAW,EACXqB,GAAI,CACFwD,QAAS,OACTq5B,UAAW,EACX3wB,QAAS,EACT,qBAAsB,CACpB,4BAA6B,CAC3B1I,QAAS,UAGbhF,SAAA,CAEDiG,GACCtG,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,SACoB,OAA1BizB,IACCtzB,EAAAA,EAAAA,KAAC2+B,GAAiB,CAChB/4B,cAAe0tB,EACf3tB,WAAYA,QAKlB3F,EAAAA,EAAAA,KAACqb,EAAAA,EAAe,CACd9X,OAAQ,CACNwD,EAAAA,GAAWopB,eACXppB,EAAAA,GAAWqpB,oBAEb5U,SAAU7V,GACVkW,WAAY,CAAEva,UAAU,GAAOjB,UAE/BC,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,CACFmI,MAAO,OACPuD,SAAU,WACV,gBAAiB,CACf,4BAA6B,CAC3BlI,QAAS,UAIfoD,UAAW+mB,EAAc,cAAgB,GAAGnvB,SAAA,EAE1CmG,IACAxG,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,CACFkM,QAAS,iBACT1N,UAEFL,EAAAA,EAAAA,KAACktB,EAAkB,CACjBvnB,WAAYA,GACZC,cAAeuvB,GACfrvB,mBACGkvB,IAAuB/uB,EAAgB,MACtCjG,EAAAA,EAAAA,KAAC0pB,EAAAA,IAAQ,CACP5oB,KAAM,kBACND,GAAI,qBACJF,MAAO,aACPC,MAAO,uBACPI,SA5YH49B,KACvBp/B,GAAS4+B,EAAAA,EAAAA,OACT5+B,GAASq/B,EAAAA,EAAAA,KAAuBxL,IAChCrT,IAAa,EAAK,EA0YQvK,QAAS4d,EACTxxB,GAAI,CACF4L,WAAY,EACZ,4BAA6B,CAC3BA,WAAY,EACZ1C,cAAe,UAMzBlF,gBAAgB,OAItB7F,EAAAA,EAAAA,KAACivB,GAAgB,UAIrBzoB,IACAxG,EAAAA,EAAAA,KAACqb,EAAAA,EAAe,CACd9X,OAAQ,CACNwD,EAAAA,GAAWopB,eACXppB,EAAAA,GAAWqpB,oBAEb5U,SAAU7V,GACVkW,WAAY,CAAEva,UAAU,GAAOjB,UAE/BC,EAAAA,EAAAA,MAACw+B,EAAgB,CACfpyB,KAAM8iB,EACN3iB,WAAYA,KACVmT,IAAa,EAAM,EAErBvX,UAAS,GAAA3D,OAAKwB,EAAe,kBAAoB,IAAKjG,SAAA,CAErD2vB,GAAgBvsB,OAAS,IACxBzD,EAAAA,EAAAA,KAACimB,EAAAA,IAAW,CACVC,MAAO9B,GACPlkB,MAAO,sBAGgB,OAA1BozB,IACCtzB,EAAAA,EAAAA,KAAC++B,GAAiB,CAChBn5B,cAAe0tB,EACf3tB,WAAYA,GACZqa,aAAcA,GACdhJ,eAAgBwc,EAChBzT,QAAS0T,oBAShB,E,gEC7tCf,MAoJA,GApJiBt0B,IAAgC,IAA/B,WAAEwG,GAAuBxG,EACzC,MAAMK,GAAWC,EAAAA,EAAAA,MACXkwB,GAAWzpB,EAAAA,EAAAA,IAAY0pB,GAAAA,IAEvBtpB,GAAeJ,EAAAA,EAAAA,KAClBC,GAAoBA,EAAMC,cAAcE,eAErCC,GAAgBL,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMC,cAAcG,gBAErCmkB,GAAiBxkB,EAAAA,EAAAA,KACpBC,GAAoBA,EAAMC,cAAcskB,iBAGrCmF,IAAmB,OAARF,QAAQ,IAARA,IAAAA,EAAU1rB,SAAS,wBAE9B8B,GAAWC,EAAAA,EAAAA,MAEXg5B,GAAyBj3B,EAAAA,GAAAA,GAAcpC,EAAY,CACvDoB,EAAAA,GAAWmvB,qBACXnvB,EAAAA,GAAWovB,qBACXpvB,EAAAA,GAAW4c,yBACX5c,EAAAA,GAAW6c,yBACX7c,EAAAA,GAAWk4B,uCACXl4B,EAAAA,GAAWm4B,uCACXn4B,EAAAA,GAAWo4B,iBACXp4B,EAAAA,GAAWq4B,4BACXr4B,EAAAA,GAAWs4B,4BACXt4B,EAAAA,GAAWu4B,iCACXv4B,EAAAA,GAAWw4B,iCACXx4B,EAAAA,GAAWy4B,+BACXz4B,EAAAA,GAAW04B,+BACX14B,EAAAA,GAAW24B,uBACX34B,EAAAA,GAAW44B,uBACX54B,EAAAA,GAAW64B,sBACX74B,EAAAA,GAAW84B,sBACX94B,EAAAA,GAAW+4B,wBACX/4B,EAAAA,GAAWg5B,4BACXh5B,EAAAA,GAAWi5B,wBACXj5B,EAAAA,GAAWwU,eACXxU,EAAAA,GAAWE,iBAGPg5B,GACJjgC,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,SACLiG,GASAtG,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPL,EAAAA,EAAAA,KAACyyB,GAAAA,EAAS,CACR1xB,YAAW,sCAAA+D,OAAwCyB,GACnDvF,SAAWL,IACTnB,GAAS0gC,EAAAA,EAAAA,IAAkBv/B,GAAO,EAEpCA,MAAO+pB,OAdX1qB,EAAAA,EAAAA,KAACqb,EAAAA,EAAe,CACd9X,OAAQ,CAACwD,EAAAA,GAAWopB,eAAgBppB,EAAAA,GAAWqpB,oBAC/C5U,SAAU7V,EACVkW,WAAY,CAAEva,UAAU,GAAOjB,UAE/BL,EAAAA,EAAAA,KAACwyB,GAAe,QAqBxB,OALAzyB,EAAAA,EAAAA,YAAU,KACRP,GAAS2gC,EAAAA,EAAAA,IAAY,kBAAkB,GAEtC,KAGDngC,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,SACLwvB,GAgDAvvB,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CACHqZ,WAAS,EACTlZ,GAAI,CACFkM,QAAS,eACT1N,SAAA,EAEFL,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAAArB,UACHL,EAAAA,EAAAA,KAACogC,GAAAA,EAAa,CAAC91B,YAAa,GAAIH,UAAW,QAE7C7J,EAAAA,EAAAA,MAACoB,EAAAA,IAAI,CACHC,MAAI,EACJC,IAAE,EACFC,GAAI,CACFwD,QAAS,OACT+N,IAAK,IACL/S,SAAA,CAED4/B,GACDjgC,EAAAA,EAAAA,KAACqgC,GAAAA,EAAmB,WAjExBrgC,EAAAA,EAAAA,KAACsgC,GAAAA,EAAiB,CAChB1/B,OACEZ,EAAAA,EAAAA,KAACugC,EAAAA,IAAQ,CACP3/B,MAAO,iBACPuB,QAASA,KACP4D,EAASy6B,EAAAA,GAAUC,oBAAoB,IAI7CpT,SACE/sB,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAACqb,EAAAA,EAAe,CACd9X,OAAQm9B,EAAAA,GAAgBC,EAAAA,GAAUC,cAClCplB,SAAU7V,EACVkW,WAAY,CAAEva,UAAU,GAAOjB,UAE/BL,EAAAA,EAAAA,KAACgM,EAAAA,EAAc,CACb7K,QACE69B,EACI,mBACA,yHACA2B,EAAAA,GAAUC,aACV,eACLvgC,UAEDL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,wBACJuJ,MAAM,UACN,aAAW,mBACXjI,QAASA,IAAM4D,EAAS,YAADjB,OAAaa,EAAU,WAC9CmE,MACE9J,EAAAA,EAAAA,KAAC6gC,EAAAA,IAAY,CACXn4B,MAAO,CAAEsB,MAAO,GAAIC,OAAQ,GAAIE,WAAY,KAGhDzB,MAAO,CACLqF,QAAS,iBAKjB/N,EAAAA,EAAAA,KAAC8gC,GAAAA,EAAQ,OAGbC,gBAAiBd,KAyBZ,EC+Df,GAnNuBe,KACrB,MAAMxhC,GAAWC,EAAAA,EAAAA,MACXyvB,GAASC,EAAAA,EAAAA,KACTvR,GAAWuV,EAAAA,EAAAA,MAEX8N,GAAoB/6B,EAAAA,EAAAA,KACvBC,GAAoBA,EAAMC,cAAc66B,oBAGrCh7B,GAAgBC,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMC,cAAcC,OAAOJ,gBAE5Ci7B,GAAah7B,EAAAA,EAAAA,KAChBC,GAAoBA,EAAMC,cAAcC,OAAO86B,eAE5C9N,GAAcntB,EAAAA,EAAAA,KACjBC,GAAoBA,EAAMC,cAAcitB,cAErC3D,GAAoBxpB,EAAAA,EAAAA,KACvBC,GAAoBA,EAAMC,cAAcspB,oBAErC0R,GAAiBl7B,EAAAA,EAAAA,KACpBC,GAAoBA,EAAMC,cAAcg7B,iBAErCC,GAAoBn7B,EAAAA,EAAAA,KACvBC,GAAoBA,EAAMC,cAAci7B,oBAErC9N,GAAartB,EAAAA,EAAAA,KAChBC,GAAoBA,EAAMC,cAAcmtB,aAErC/sB,GAAgBN,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMM,OAAOD,gBAE9BuQ,GAAiB7Q,EAAAA,EAAAA,KACpBC,GAAoBA,EAAMC,cAAc2Q,iBAErC+Y,GAAU5pB,EAAAA,EAAAA,KAAaC,GAAoBA,EAAMC,cAAc0pB,UAE/DnqB,EAAaupB,EAAOvpB,YAAc,GAClCsvB,EAAcrX,EAASsX,SAAS3tB,MAAM,YAADzC,OAAaa,EAAU,MAC5DC,EAAuC,IAAvBqvB,EAAYxxB,OAAewxB,EAAY,GAAK,GAE5DqM,GAAgB7K,EAAAA,EAAAA,cACnBjvB,IACC,IAEIwM,GAFW,IAAI/C,MAEC8B,cAED,OAAfmuB,GAAuBj7B,IACzB+N,EAAOktB,GAUT1hC,EAAS,CAAEyC,KAAM,mBAAoBsuB,QAPjB,CAClB5qB,aACA6B,OACA+5B,WAAYt7B,GAAiBotB,EAC7Brf,KAAMA,IAGoD,GAE9D,CAACrO,EAAY0tB,EAAa6N,EAAYj7B,EAAezG,IAIjDgiC,GAAW/K,EAAAA,EAAAA,cACf,WAAiC,IAAhCgL,EAAkBj+B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACjB,MAAMioB,GAAuBpT,EAAAA,EAAAA,IAAgBzS,GAG7CpG,GAASwJ,EAAAA,EAAAA,IAAuB,CAAEC,QAAQ,KAE1C,IAAIy4B,EAAajW,EAEZA,EAAqB9b,SAAS,MAAiC,KAAzB8b,IACzCiW,EAAU,GAAA58B,OAAM2mB,EACblkB,MAAM,KACNc,MAAM,GAAI,GACVC,KAAK,KAAI,MAGK,MAAfo5B,IACFA,EAAa,KAKbA,IAAenO,GACf5tB,IAAeoR,GACf0qB,KAEAjiC,GAASmiC,EAAAA,EAAAA,IAAqB,IAC9BL,EAAcI,GAElB,GACA,CACE97B,EACApG,EACA+zB,EACAxc,EACApR,EACA27B,KAIJvhC,EAAAA,EAAAA,YAAU,IACD,KACLP,EAAS,CAAEyC,KAAM,uBAAwB,GAE1C,CAACzC,KAGJO,EAAAA,EAAAA,YAAU,KACR,MAAM6hC,GAAgBvpB,EAAAA,EAAAA,IAAgBzS,GAEtCpG,GAASqiC,EAAAA,EAAAA,KAAqB,IAE1BD,EAAcjyB,SAAS,MAA0B,KAAlBiyB,GACjCpiC,GAASsxB,EAAAA,EAAAA,KAAqB,IAC9BtxB,GAASuxB,EAAAA,EAAAA,IAAsB,OAC/BvxB,GAASsiC,EAAAA,EAAAA,KAAkB,MAE3BtiC,GAASijB,EAAAA,EAAAA,KAAqB,IAC9BjjB,GAASsxB,EAAAA,EAAAA,KAAqB,IAC9BtxB,GAAS6lB,EAAAA,EAAAA,KAAmB,IAC5B7lB,GACEuxB,EAAAA,EAAAA,IAAsB,GAADjsB,OAChB88B,EAAa,GAAA98B,QAAM0D,EAAAA,EAAAA,IAAgBo5B,IAAc,MAG1D,GACC,CAACj8B,EAAYC,EAAes7B,EAAYj7B,EAAezG,KAG1DO,EAAAA,EAAAA,YAAU,KACRyhC,GAAS,EAAM,GACd,CAACA,KAGJzhC,EAAAA,EAAAA,YAAU,KACJshC,GAAwC,IAAnBvR,EAAQrsB,SAAiBisB,GAChD8R,GAAS,EACX,GACC,CAACH,EAAmBvR,EAASJ,EAAmB8R,IAEnD,MAAMtR,GACJnoB,EAAAA,GAAAA,GAAcpC,EAAY,CACxBoB,EAAAA,GAAWopB,eACXppB,EAAAA,GAAWqpB,sBACP5pB,EAsDR,OApDAzG,EAAAA,EAAAA,YAAU,KACJkhC,IAAsBz6B,IACpB0pB,EACF3tB,EAAAA,EAAI+T,QACDyrB,oBAAoBp8B,GACpBjD,MAAMC,IACLnD,GAASwiC,EAAAA,EAAAA,IAAer/B,EAAIyf,OAC5B5iB,GAASqiC,EAAAA,EAAAA,KAAqB,GAAO,IAEtCh/B,OAAO4T,IACNvP,QAAQlE,MACN,2CACAyT,EAAIzT,MAAMg0B,iBAEZx3B,GAASqiC,EAAAA,EAAAA,KAAqB,GAAO,KAGzCriC,GAASqiC,EAAAA,EAAAA,KAAqB,IAC9BriC,GAAS4+B,EAAAA,EAAAA,QAEb,GACC,CACDz4B,EACAs7B,EACAzhC,EACA0wB,EACA1pB,KAGFzG,EAAAA,EAAAA,YAAU,KACJqhC,IACElR,EACF3tB,EAAAA,EAAI+T,QACD2rB,6BAA6Bt8B,GAC7BjD,MAAMC,IACLnD,GAAS0iC,EAAAA,EAAAA,IAAkBv/B,EAAIyf,KAAK+f,yBACpC3iC,GAASsiC,EAAAA,EAAAA,KAAkB,GAAO,IAEnCj/B,OAAO4T,IACNvP,QAAQlE,MACN,wCACAyT,EAAIzT,MAAMg0B,iBAEZx3B,GAASsiC,EAAAA,EAAAA,KAAkB,GAAO,KAGtCtiC,GAAS4+B,EAAAA,EAAAA,OACT5+B,GAASsiC,EAAAA,EAAAA,KAAkB,KAE/B,GACC,CAACn8B,EAAYy7B,EAAgB5hC,EAAU0wB,KAGxC5vB,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACLmG,IAAiBxG,EAAAA,EAAAA,KAACoiC,GAAQ,CAACz8B,WAAYA,KACzC3F,EAAAA,EAAAA,KAACizB,GAAW,MACH,C,uJCnOf,MA8QA,EArPqB9zB,IAOC,IAPA,GACpB0B,EAAE,YACFwhC,EAAW,MACXzhC,EAAK,WACL0hC,EAAU,OACVC,EAAM,SACNvhC,GACc7B,EACd,MAAMqjC,EAAU3J,KAAKkB,MAAMuI,EAjCT,OAkCZG,EAAW5J,KAAKkB,MAAOuI,EAlCX,MACC,MAkCbI,EAAa7J,KAAKkB,MAAOuI,EAlCZ,KACA,KAmCZK,EAAcC,IAAmBhjC,EAAAA,EAAAA,UAAiB,IAClDijC,EAAeC,IAAoBljC,EAAAA,EAAAA,UAAiB,IACpDmjC,EAAiBC,IAAsBpjC,EAAAA,EAAAA,UAAiB,IACxD0S,EAAW2wB,IAAgBrjC,EAAAA,EAAAA,WAAkB,IAC7CsjC,EAAcC,IAAmBvjC,EAAAA,EAAAA,UAAmB0pB,EAAAA,GAASC,QAGpExpB,EAAAA,EAAAA,YAAU,KACR6iC,EAAgBJ,GAChBM,EAAiBL,GACjBO,EAAmBN,EAAW,GAC7B,CAACF,EAASC,EAAUC,KAEvB3iC,EAAAA,EAAAA,YAAU,KAEL0S,MAAMowB,IACNpwB,MAAMkwB,IACNlwB,MAAMswB,IAEPI,EA3CmBC,EACvBf,EACAzxB,EACAyyB,EACAC,IAEOha,EAAAA,GAASia,WAAWlB,GAAamB,KAAK,CAC3CH,MAAOA,EAAe,GAAPzyB,EACf0yB,YAoCIF,CACEf,EACAM,EACAE,EACAE,GAGN,GACC,CAACV,EAAaM,EAAcE,EAAeE,KAE9ChjC,EAAAA,EAAAA,YAAU,KACR,GAAIuS,EAAW,CACb,MAAMmxB,EAAgBP,EAAanZ,SAAS,uBAC5C/oB,EAASyiC,EAAcl8B,MAAM,KAAKe,KAAK,MAAM,EAC/C,MACEtH,EAAS,cAAc,EACzB,GACC,CAACkiC,EAAcliC,EAAUsR,KAG5BvS,EAAAA,EAAAA,YAAU,KACR,IAAI2jC,GAAQ,GAGVf,EAAe,GACfA,EAAe,GACfA,EAAeH,GACf/vB,MAAMkwB,MAENe,GAAQ,IAGNb,EAAgB,GAAKA,EAAgB,IAAMpwB,MAAMowB,MACnDa,GAAQ,IAGNX,EAAkB,GAAKA,EAAkB,IAAMtwB,MAAMswB,MACvDW,GAAQ,GAGNf,IAAiBH,IACfK,EAAgBJ,IAClBiB,GAAQ,GAGNb,IAAkBJ,GAChBM,EAAkBL,IACpBgB,GAAQ,IAKVf,GAAgB,GAAKE,GAAiB,GAAKE,GAAmB,IAChEW,GAAQ,GAGVT,EAAaS,EAAM,GAClB,CACDR,EACAV,EACAC,EACAC,EACA1hC,EACA2hC,EACAE,EACAE,IAGF,MAAMY,EAAc,CAClB,sBAAuB,CACrBj2B,SAAU,GAEZ,UAAW,CACTqV,UAAW,SACXzd,aAAc,GACds+B,YAAa,GACb55B,MAAO,KAIX,OACE1J,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CAAC9B,UAAW,YAAYpI,SAAA,EAC1BL,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CACF1I,GAAI,CACFwD,QAAS,OACTE,WAAY,SACZoF,aAAc,GACdtK,UAEFL,EAAAA,EAAAA,KAACqT,EAAAA,IAAU,CAACC,QAASzS,EAAGR,SAAEO,OAE5BN,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF1I,GAAI,CACFwD,QAAS,OACTE,WAAY,aACZqF,eAAgB,eAChBwI,IAAK,GACL,kBAAmB,CACjBqI,SAAU,cACV,YAAa,CACX3Q,WAAY,IACZ2C,WAAY,GACZnD,YAAa,MAGjBjK,SAAA,EAEFL,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CAAAlK,UACFL,EAAAA,EAAAA,KAACU,EAAAA,IAAQ,CACPG,GAAIA,EACJ4H,UAAS,4BACTxG,KAAK,SACL4hC,IAAI,IACJC,IAAI,IACJljC,MAAM,OACNE,KAAMD,EACNG,SAAWC,IACT2hC,EAAgBzwB,SAASlR,EAAEC,OAAOP,OAAO,EAE3CA,MAAOgiC,EAAax5B,WACpBtH,GAAI8hC,EACJnW,iBAAe,OAGnBxtB,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CAAAlK,UACFL,EAAAA,EAAAA,KAACU,EAAAA,IAAQ,CACPG,GAAIA,EACJ4H,UAAS,4BACTxG,KAAK,SACL4hC,IAAI,IACJC,IAAI,KACJljC,MAAM,QACNE,KAAMD,EACNG,SAAWC,IACT6hC,EAAiB3wB,SAASlR,EAAEC,OAAOP,OAAO,EAE5CA,MAAOkiC,EAAc15B,WACrBtH,GAAI8hC,EACJnW,iBAAe,OAGnBxtB,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CAAAlK,UACFL,EAAAA,EAAAA,KAACU,EAAAA,IAAQ,CACPG,GAAIA,EACJ4H,UAAS,4BACTxG,KAAK,SACL4hC,IAAI,IACJC,IAAI,KACJljC,MAAM,UACNE,KAAMD,EACNG,SAAWC,IACT+hC,EAAmB7wB,SAASlR,EAAEC,OAAOP,OAAO,EAE9CA,MAAOoiC,EAAgB55B,WACvBtH,GAAI8hC,EACJnW,iBAAe,UAIrBxtB,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CACF1I,GAAI,CACFwD,QAAS,OACTE,WAAY,SACZqF,eAAgB,aAChBT,UAAW,GACXsD,WAAY,GACZ9C,aAAc,GACd,kBAAmB,CACjBE,SAAU,GACVV,UAAW,GACX9E,QAAS,OACTE,WAAY,SACZqF,eAAgB,SAChB,4BAA6B,CAC3B6Q,SAAU,UAEZ,gBAAiB,CACfrR,MAAO,UACPJ,MAAO,GACPC,OAAQ,GACRK,YAAa,KAGjB,eAAgB,CACdQ,WAAY,OACZ2C,WAAY,IAEd,yBAA0B,CACxBtD,UAAW,GACX9E,QAAS,OACT+E,MAAO,MACPS,SAAU,KAEZxK,SAEDiS,GACChS,EAAAA,EAAAA,MAAA,OAAKmI,UAAW,eAAepI,SAAA,EAC7BL,EAAAA,EAAAA,KAAC+jC,EAAAA,IAAQ,KACTzjC,EAAAA,EAAAA,MAAA,OAAAD,SAAA,CAAMkiC,EAAO,+BAAgC,KAC7CviC,EAAAA,EAAAA,KAAA,OAAKyI,UAAW,YAAYpI,SACzB6iC,EAAanZ,SAAS,kCAI3B/pB,EAAAA,EAAAA,KAAA,OAAKyI,UAAW,sBAAsBpI,SAAC,wCAKvC,E,gFCzOV,MAoNA,EApNkBlB,IAKM,IALL,KACjBuN,EAAI,qBACJgH,EAAoB,WACpB/N,EAAU,WACVqf,GACgB7lB,EAChB,MAAMK,GAAWC,EAAAA,EAAAA,MACX6Z,GAAmBpT,EAAAA,EAAAA,IAAYqT,EAAAA,IAC/ByqB,GAAyB99B,EAAAA,EAAAA,IAAY+9B,EAAAA,KACpCC,EAAUC,IAAevkC,EAAAA,EAAAA,UAAiB,KAC1CwkC,EAAkBC,IAAuBzkC,EAAAA,EAAAA,WAAkB,IAC3D0kC,EAAeC,IAAoB3kC,EAAAA,EAAAA,WAAkB,IACrD4kC,EAAcC,IAAmB7kC,EAAAA,EAAAA,UAAiB,KAClD8kC,EAAWC,IAAgB/kC,EAAAA,EAAAA,WAAkB,IAC7C+iB,EAAWiiB,IAAgBhlC,EAAAA,EAAAA,UAAiB,QAE7CyiC,EAAc,IAAIpxB,KAkGxB,OAtFAlR,EAAAA,EAAAA,YAAU,KACRP,GAASqlC,EAAAA,EAAAA,MAAyB,GACjC,CAACrlC,KAEJO,EAAAA,EAAAA,YAAU,KAER,QAA8B2D,IAA1BshB,EAAW7O,WAEb,OAAImD,GACF/W,EAAAA,EAAI+T,QACD2L,YAAYtc,EAAY,CACvBjG,QAAQ8I,EAAAA,EAAAA,IAAgBwc,EAAWlkB,MAAQ,IAC3CohB,cAAe5I,IAEhB5W,MAAMC,IACL,MAEMmiC,GAFyBniC,EAAIyf,KAAKC,SAAW,IAEI9d,MACpDwgC,GAAuBA,EAAKplB,YAI7BilB,EADEE,EACW,GAADhgC,OAAIggC,EAAc3uB,YAKnB,OAAO,IAErBtT,OAAO4T,IACNjX,GAASkX,EAAAA,EAAAA,KAA0B3T,EAAAA,EAAAA,GAAe0T,EAAIzT,QAAQ,SAGlEqhC,GAAoB,KAGtBO,EAAa,aACbP,GAAoB,IAGtBO,EAAa5f,EAAW7O,YAAc,QACtCkuB,GAAoB,EAAM,GACzB,CAAC1+B,EAAYqf,EAAY1L,EAAkB9Z,KAE9CO,EAAAA,EAAAA,YAAU,KACR,GAAI2kC,IAAcN,EAAkB,CAClCG,GAAiB,GACjBJ,EAAY,IAEZ,MAAMa,EAAS,IAAI/zB,KAAK,GAADnM,OAAI0/B,IACrBS,EAAW,IAAIh0B,KAEfi0B,EAAWrM,KAAKsM,MACnBH,EAAOje,UAAYke,EAASle,WAAa,KAGxCme,EAAW,GACb3iC,EAAAA,EAAI+T,QACD8uB,YAAYz/B,EAAY,CACvBjG,QAAQ8I,EAAAA,EAAAA,IAAgBwc,EAAWlkB,MAAQ,IAC3CqV,WAAYwM,EACZnM,QAA0B,KAAjBguB,EAAmB,GAAA1/B,OAAMogC,EAAQ,KAAM,KAEjDxiC,MAAMC,IACLwhC,EAAYxhC,EAAIyf,MAChBmiB,GAAiB,EAAM,IAExB1hC,OAAO4T,IACNjX,GAASkX,EAAAA,EAAAA,KAA0B3T,EAAAA,EAAAA,GAAe0T,EAAIzT,SACtDmhC,EAAY,IACZI,GAAiB,EAAM,GAG/B,IACC,CACDvf,EACAwf,EACA7+B,EACA++B,EACAP,EACA3kC,EACA8Z,EACA8qB,EACAzhB,KAIA3iB,EAAAA,EAAAA,KAACiF,EAAAA,SAAc,CAAA5E,UACbC,EAAAA,EAAAA,MAACL,EAAAA,EAAY,CACXC,MAAM,aACNC,WAAWH,EAAAA,EAAAA,KAACukB,EAAAA,IAAS,CAAC7b,MAAO,CAAEwB,KAAM,aACrC9K,UAAWsN,EACXrN,QAASA,KACPqU,GAAsB,EACtBrT,SAAA,CAED+jC,IACCpkC,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGvB,UAChBL,EAAAA,EAAAA,KAACitB,EAAAA,IAAW,OAGdmX,IACA9jC,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,EACPL,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,CACFgJ,SAAU,GACVC,WAAY,KACZzK,UAEFL,EAAAA,EAAAA,KAACwK,EAAAA,IAAO,CACN+I,UAAU,QACVpS,SACEb,EAAAA,EAAAA,MAAA,QAAAD,SAAA,CAAM,iFAEcL,EAAAA,EAAAA,KAAA,SAAM,KAACA,EAAAA,EAAAA,KAAA,SAAM,8HAGxBA,EAAAA,EAAAA,KAAA,SAAM,KAACA,EAAAA,EAAAA,KAAA,SAAM,gBACRA,EAAAA,EAAAA,KAAA,KAAAK,SAAG,aAAY,8FAG9BA,UAEDC,EAAAA,EAAAA,MAAA,QAAAD,SAAA,CAAM,4EAEKL,EAAAA,EAAAA,KAAA,SAAM,0EAEGqlC,EAAAA,EAAAA,IAAoBrB,GAAwB,2DAKpEhkC,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGvB,UAChBL,EAAAA,EAAAA,KAACslC,EAAY,CACXjD,YAAaA,EACbxhC,GAAG,OACHD,MAAM,aACN0hC,WAAY0B,EACZhjC,SAvJMukC,CAACC,EAAiBpzB,KACpCuyB,EAAavyB,GACTA,EACFqyB,EAAgBe,IAGlBf,EAAgB,IAChBN,EAAY,IAAG,EAiJH5B,OAAO,YAGXviC,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,CACF8I,aAAc,IACdtK,UAEFL,EAAAA,EAAAA,KAACylC,EAAAA,IAAO,CACNC,cACE1lC,EAAAA,EAAAA,KAAC4J,IAAe,CAACC,KAAMq6B,EAAS7jC,UAC9BL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,YACJqB,QAAQ,UACRC,QAASA,KACP3C,GACEmmC,EAAAA,EAAAA,IAAqB,iCACtB,EAEHrkC,SAAuB,KAAb4iC,GAAmBI,EAC7B57B,MAAO,CACLsB,MAAO,OACPC,OAAQ,OACR8D,QAAS,OAEXjE,MAAM9J,EAAAA,EAAAA,KAAC+J,EAAAA,IAAQ,QAGpB1J,SAEA6jC,aAMI,C,mMCjPrB0B,EAAAA,EAAMC,oBAAoBC,UAAY,8BAStC,MAiHA,EAjHmB3mC,IAKM,IALL,KAClBqI,EAAI,QACJu+B,EAAO,OACPC,EAAM,aACNC,GACiB9mC,EACjB,MAAO+mC,EAAYC,IAAiBvmC,EAAAA,EAAAA,WAAkB,IAC/CwmC,EAAYC,IAAiBzmC,EAAAA,EAAAA,UAAiB,GAErD,IAAK4H,EACH,OAAO,KAGT,MAAM8+B,EAAcF,EAAa,EAAI,EAAIA,EACnCG,EAAch2B,MAAMM,KAAKN,MAAM+1B,GAAaziC,QAElD,OACEvD,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CACN6lC,GAA6B,IAAfE,IACbpmC,EAAAA,EAAAA,KAACwmC,EAAAA,IAAkB,CACjBtkC,QAAS,QACThC,MAAO,QACPoe,SACEhe,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CAAC,oEAERL,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CACF1I,GAAI,CACFwD,QAAS,OACTuF,eAAgB,SAChBT,UAAW,IACX9J,UAEFL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,mBACJsB,QAAS8jC,EACT/jC,QAAS,aAAa7B,SACvB,uBAMPwB,GAAI,CAAE8I,aAAc,OAGtBo7B,IAAYG,IACZlmC,EAAAA,EAAAA,KAACwmC,EAAAA,IAAkB,CACjBtkC,QAAS,UACThC,MAAO,eACPoe,SACEhe,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CAAC,wCAC8BkmC,EAAY9iC,OAAO,+FAGzDzD,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CACF1I,GAAI,CACFwD,QAAS,OACTuF,eAAgB,SAChBT,UAAW,IACX9J,UAEFL,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,mBACJsB,QAAS8jC,EACT/jC,QAAS,aAAa7B,SACvB,uBAMPwB,GAAI,CAAE8I,aAAc,OAGtBu7B,IACAlmC,EAAAA,EAAAA,KAACuK,EAAAA,IAAG,CACF1I,GAAI,CACFyL,UAAW,OACX,6BAA8B,CAC5B5H,OAAQ,SACRsI,gBAAiB,gBAEnB3N,UAEFL,EAAAA,EAAAA,KAACymC,EAAAA,EAAQ,CACPppB,KAAM7V,EACNk/B,cAAevtB,IAAmB,IAAlB,SAAEwtB,GAAUxtB,EAC1BktB,EAAcM,EAASC,UAAY,GACnCT,GAAc,GACdH,GAAQ,EAEVa,YAAc7jC,IACZmjC,GAAc,GACdH,IACA9+B,QAAQlE,MAAMA,EAAM,EACpB3C,SAEDkmC,EAAYt+B,KAAKtG,IAChB3B,EAAAA,EAAAA,KAAC8mC,EAAAA,EAAI,CACHC,WAAYplC,EAAO,EAEnBqlC,uBAAuB,EACvBC,iBAAiB,EACjBC,aAAa,GAAM,eAAApiC,OAHCnD,YASrB,E,0BCzGf,MAgMA,EAhMoBxC,IAIM,IAJL,WACnBwG,EAAU,WACV6S,EAAU,aACV2uB,GAAe,GACGhoC,EAClB,MAAMK,GAAWC,EAAAA,EAAAA,OAEVsmC,EAASqB,IAAcxnC,EAAAA,EAAAA,WAAkB,IAEzCwQ,EAAUsR,IAAe9hB,EAAAA,EAAAA,UAAc,OACvCk1B,EAAkBC,IAAuBn1B,EAAAA,EAAAA,WAAS,GAEnDsJ,GAAuB,OAAVsP,QAAU,IAAVA,OAAU,EAAVA,EAAY1X,OAAQ,GAEjC01B,GAAgBC,EAAAA,EAAAA,cAAY,KAChC,IAAK3B,EAAkB,CACrB,MAAM4B,GAAcluB,EAAAA,EAAAA,IAAgBU,GACpC3G,EAAAA,EAAI+T,QACDoM,kBAAkB/c,EAAY,CAC7BjG,OAAQg3B,EACR/T,UAAWnK,EAAWrC,YAAc,KAErCzT,MAAMC,IACL,IAAIigB,EAAWjK,IAAIhW,EAAIyf,KAAM,iBAAkB,CAAC,GAChD2S,GAAoB,GACpBrT,EAAYkB,EAAS,IAEtB/f,OAAO4T,IACNvP,QAAQlE,MACN,kCACAyT,EACG,OAAHA,QAAG,IAAHA,OAAG,EAAHA,EAAKa,eAEPyd,GAAoB,EAAK,GAE/B,IACC,CAACpvB,EAAYuD,EAAY4rB,EAAkBtc,EAAWrC,cAEzDpW,EAAAA,EAAAA,YAAU,KACJ4F,GAAcuD,GAChBstB,GACF,GACC,CAAC7wB,EAAYuD,EAAYstB,IAE5B,IAAIhvB,EAAO,GAEX,GAAIgR,EAAY,CACd,MAAMke,GAAcluB,EAAAA,EAAAA,IAAgBgQ,EAAW1X,MAAQ,IACvD,IAAIyc,EAAWC,SAASC,QAAQC,QAAQC,OAAOC,SAASC,OAAQ,IAChErW,EAAI,GAAA1C,OAAM6Y,OAAOC,SAASC,QAAM/Y,OAAGyY,EAAQ,mBAAAzY,OAAkBa,EAAU,0CAAAb,OAAyC4xB,GAC5Gle,EAAWrC,aACb3O,EAAOA,EAAK1C,OAAO,eAADA,OAAgB0T,EAAWrC,aAEjD,CAEA,IAAI+N,GAA8BC,EAAAA,EAAAA,IAAkB/T,EAAUlH,GAE9D,MAAMm+B,EAAeA,KACnBD,GAAW,EAAM,EAGnB,OACE9mC,EAAAA,EAAAA,MAACkB,EAAAA,SAAQ,CAAAnB,SAAA,CACS,SAAf6jB,GAAyB6hB,IACxB/lC,EAAAA,EAAAA,KAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGvB,UAChBL,EAAAA,EAAAA,KAACitB,EAAAA,IAAW,MAGf6H,GACCx0B,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF1I,GAAI,CACFkhB,UAAW,SACX,qBAAsB,CACpB1Y,OAAQ,MACRi9B,KAAM,WACNt9B,MAAO,OACPC,OAAQ,IACR+D,gBAAiB,cACjBf,aAAc,EAEd,UAAW,CACThD,OAAQ,KAEV,UAAW,CACTA,OAAQ,KAEV,UAAW,CACTA,OAAQ,KAEV,eAAgB,CACdA,OAAQ,wBAGZ,gBAAiB,CACf+D,gBAAiB,QAEnB,kBAAmB,CACjB3I,QAAS,SAEXhF,SAAA,CAEc,UAAf6jB,IACClkB,EAAAA,EAAAA,KAAA,SACE0I,MAAO,CACLsB,MAAO,OACPC,OAAQ,OACRqe,SAAU,sBACV5X,UAAW,uBAEb62B,UAAU,EACVC,UAAU,EACVC,OAAO,EACPC,aAAa,EACbC,OAAQN,EAAahnC,UAErBL,EAAAA,EAAAA,KAAA,UAAQ4nC,IAAKpgC,EAAMvF,KAAK,gBAGZ,UAAfiiB,IACClkB,EAAAA,EAAAA,KAAA,SACE0I,MAAO,CACLsB,MAAO,OACPC,OAAQ,QAEVs9B,UAAU,EACVC,UAAU,EACVC,OAAO,EACPC,aAAa,EACbC,OAAQN,EAAahnC,UAErBL,EAAAA,EAAAA,KAAA,UAAQ4nC,IAAKpgC,EAAMvF,KAAK,iBAGZ,UAAfiiB,IACClkB,EAAAA,EAAAA,KAAA,OACE0I,MAAO,CACLsB,MAAO,OACPC,OAAQ,OACRqe,SAAU,QACV5X,UAAW,SAEbk3B,IAAKpgC,EACLqgC,IAAK,UACL7B,OAAQqB,IAGI,QAAfnjB,IACClkB,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPL,EAAAA,EAAAA,KAAC8nC,EAAU,CACTtgC,KAAMA,EACNw+B,OAAQqB,EACRtB,QAASA,EACTE,aAAcA,KACZzmB,EAAAA,EAAAA,GAAehgB,EAAUmG,EAAY6B,EAAMgR,OAKnC,SAAf0L,IACClkB,EAAAA,EAAAA,KAAA,OAAAK,UACEL,EAAAA,EAAAA,KAACwmC,EAAAA,IAAkB,CACjBloB,QAAQ,6FAERpe,MAAM,sBACN2B,GAAI,CAAE6D,OAAQ,cAIJ,SAAfwe,GACgB,UAAfA,GACe,UAAfA,GACe,UAAfA,GACe,QAAfA,IACElkB,EAAAA,EAAAA,KAAA,OAAKyI,UAAS,cAAA3D,OAAgBihC,EAAU,eAAiB,IAAK1lC,UAC5DL,EAAAA,EAAAA,KAAA,UACE4nC,IAAKpgC,EACLtH,MAAM,eACN6nC,mBAAiB,EACjBt/B,UAAS,mBAAA3D,OACPqiC,EAAe,aAAejjB,GAEhC8hB,OAAQqB,EAAahnC,SACtB,8DAMP,OACK,EC5Kf,EArByBlB,IAKC,IALA,KACxBuN,EAAI,WACJ/G,EAAU,WACV6S,EAAU,eACVkN,GACkBvmB,EAClB,OACEa,EAAAA,EAAAA,KAACwB,EAAAA,SAAQ,CAAAnB,UACPL,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXb,UAAWsN,EACXxM,MAAK,aAAA4E,OAAyB,OAAV0T,QAAU,IAAVA,OAAU,EAAVA,EAAY1X,MAChCzB,QAASqmB,EACTsiB,WAAW,EACX7nC,WAAWH,EAAAA,EAAAA,KAACioC,EAAAA,GAAiB,IAAI5nC,UAEjCL,EAAAA,EAAAA,KAACkoC,EAAkB,CAACviC,WAAYA,EAAY6S,WAAYA,OAEjD,C,0ECbf,QAfA,SACE2vB,GAEC,IADDC,EAAmC5kC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAUtC,OARA,SAA+B6kC,GAC7B,OACEroC,EAAAA,EAAAA,KAACsoC,EAAAA,SAAQ,CAACF,SAAUA,EAAS/nC,UAC3BL,EAAAA,EAAAA,KAACmoC,EAAgB,IAAME,KAG7B,CAGF,C,gLCWO,MAAMxL,GAAmB0L,EAAAA,EAAAA,IAC9B,kCACAnrB,MAAOzX,EAAkBxG,KAA+C,IAA7C,SAAEqpC,EAAQ,gBAAEC,EAAe,SAAEjpC,GAAUL,EAChE,MAAMgH,EAAQqiC,IAERhpB,EAAkB6O,IACtB,MAAMqa,GAAmBlgC,EAAAA,EAAAA,IAAgB,GAAD1D,OACnCa,EAAU,KAAAb,OAAIupB,EAAOvtB,KAAI,KAAAgE,QAAI,IAAImM,MAAO8V,UAAS,KAAAjiB,OAAI+zB,KAAKC,WAGzDR,GAAKC,EAAAA,EAAAA,IAAO,GAEZoQ,GAAeC,EAAAA,EAAAA,IACnBjjC,GACA6C,EAAAA,EAAAA,IAAgB6lB,EAAOvtB,MACvButB,EAAOlY,WACPkY,EAAOvO,KACP,KACAwY,GACCwB,IACCt6B,GACE06B,EAAAA,EAAAA,IAAe,CACbP,WAAY+O,EACZ5O,SAAUA,IAEb,IAEH,KACEt6B,GAAS85B,EAAAA,EAAAA,IAAeoP,GAAkB,IAE3C9O,IACCp6B,GAASk6B,EAAAA,EAAAA,IAAW,CAAEC,WAAY+O,EAAkB9O,QAAO,IAE7D,KACEp6B,GAAS86B,EAAAA,EAAAA,IAAmBoO,GAAkB,IAEhD,KACElpC,GACEoD,EAAAA,EAAAA,IACE,0DAEH,KAGL83B,EAAAA,EAAAA,IAAyBpC,EAAIqQ,GAC7BnpC,GACEm7B,EAAAA,EAAAA,IAAa,CACXrC,KACA3yB,aACAi1B,MAAM,EACNjB,WAAY+O,EACZ7N,WAAY,EACZn7B,OAAQ2uB,EAAOvtB,KACfmB,KAAM,WACN64B,gBAAgB,EAChBC,QAAQ,EACRC,WAAW,EACX3c,aAAc,KAEjB,EAGH,GAAmD,IAA/ClY,EAAMC,cAAc4pB,gBAAgBvsB,OAAc,CACpD,IAAIolC,EAAsC,GAE1C,MAAMC,EAAkBvmB,GACtBpc,EAAMC,cAAc4pB,gBAAgB/rB,SAASse,EAAUzhB,MAKzD,GAHA+nC,EAAkB1iC,EAAMC,cAAc0pB,QAAQ5rB,OAAO4kC,GAGtB,IAA3BD,EAAgBplC,OAAc,CAChC,GACEolC,EAAgB,GAAG/nC,KAAK2C,OAAS,MACjCslC,EAAAA,EAAAA,MAAcj5B,cAAc7L,SAAS,OAGrC,YADAzE,GAASg+B,EAAAA,EAAAA,IAAuBqL,EAAgB,KAGhDrpB,EAAeqpB,EAAgB,GAEnC,MACE,GAA+B,IAA3BA,EAAgBplC,OAClB+b,EAAeqpB,EAAgB,SAC1B,GAAIA,EAAgBplC,OAAS,EAAG,CACrC,MAAM8kB,EAAQ,GAAAzjB,OAAMwkB,EAAAA,GAASC,MAAMQ,SACjC,uBACD,mBAGKif,EAAeH,EAAgB/kC,QAAO,CAACmlC,EAAeC,KAG1D,MAAMC,EAAc,OAAFD,QAAE,IAAFA,OAAE,EAAFA,EAAI5W,YAMtB,OALI4W,IAAOC,EACTF,EAAOvc,KAAKwc,EAAGpoC,MAEfoG,QAAQ40B,IAAI,YAADh3B,OAAe,OAAFokC,QAAE,IAAFA,OAAE,EAAFA,EAAIpoC,KAAI,oBAE3BmoC,CAAM,GACZ,IAGH,kBADMG,EAAAA,EAAAA,IAAsBzjC,EAAYqjC,EAAczgB,EAExD,CAEJ,KAISwU,GAAcwL,EAAAA,EAAAA,IACzB,6BACAnrB,MAAOtM,EAACqI,KAA+C,IAA7C,SAAEqvB,EAAQ,gBAAEC,EAAe,SAAEjpC,GAAU2Z,EAC/C,MAAMhT,EAAQqiC,IAEd,GAAmD,IAA/CriC,EAAMC,cAAc4pB,gBAAgBvsB,OAAc,CACpD,IAAI4lC,EAEJ,MAAMC,EAAgB/mB,GACpBpc,EAAMC,cAAc4pB,gBAAgB/rB,SAASse,EAAUzhB,MAEzDuoC,EAAaljC,EAAMC,cAAc0pB,QAAQvrB,KAAK+kC,GAE1CD,IACF7pC,GAAS09B,EAAAA,EAAAA,IAAmBmM,IAC5B7pC,GAAS6hB,EAAAA,EAAAA,KAAe,IAE5B,KAISyb,GAAYyL,EAAAA,EAAAA,IACvB,2BACAnrB,MAAOtM,EAACy4B,KAA+C,IAA7C,SAAEf,EAAQ,gBAAEC,EAAe,SAAEjpC,GAAU+pC,EAC/C,MAAMpjC,EAAQqiC,IAEd,GAAmD,IAA/CriC,EAAMC,cAAc4pB,gBAAgBvsB,OAAc,CACpD,IAAI4lC,EAEJ,MAAMC,EAAgB/mB,GACpBpc,EAAMC,cAAc4pB,gBAAgB/rB,SAASse,EAAUzhB,MAEzDuoC,EAAaljC,EAAMC,cAAc0pB,QAAQvrB,KAAK+kC,GAE1CD,IACF7pC,GAAS09B,EAAAA,EAAAA,IAAmBmM,IAC5B7pC,GAAS2gB,EAAAA,EAAAA,KAAsB,IAEnC,KAIS6c,GAAsBuL,EAAAA,EAAAA,IACjC,qCACAnrB,MAAOtM,EAAC04B,KAA8B,IAA5B,SAAEhB,EAAQ,SAAEhpC,GAAUgqC,EAC9B,MAAMrjC,EAAQqiC,IAGmC,IAA/CriC,EAAMC,cAAc4pB,gBAAgBvsB,QACpC0C,EAAMC,cAAc4pB,gBAAgB,GAAGrgB,SAAS,MAEhDnQ,GAASm+B,EAAAA,EAAAA,KAAuB,GAClC,IAISkH,GAAyB0D,EAAAA,EAAAA,IACpC,qCACAnrB,MAAOtM,EAAC24B,KAAqC,IAAnC,gBAAEhB,EAAe,SAAEjpC,GAAUiqC,EACrC,OAAOlnC,EAAAA,EAAI+T,QACRozB,qBACAhnC,MAAMC,IACLnD,GAASmqC,EAAAA,EAAAA,IAAuBhnC,EAAIyf,KAAKwnB,KAAK,IAE/C/mC,OAAMua,SACEqrB,EAAgB9lC,EAAIK,QAC3B,G,0GC3LD,MAAMwc,EAAiBA,CAC5BhgB,EACAmG,EACAC,EACAyoB,KACI,IAADqC,EACH,MAAMgY,GAAmBlgC,EAAAA,EAAAA,IAAgB,GAAD1D,OACnCa,EAAU,KAAAb,OAAIupB,EAAOvtB,KAAI,KAAAgE,QAAI,IAAImM,MAAO8V,UAAS,KAAAjiB,OAAI+zB,KAAKC,WAGzD+Q,GAAUd,EAAAA,EAAAA,MAAcj5B,cAAc7L,SAAS,OAErD,KAAgB,QAAXysB,EAAArC,EAAOvtB,YAAI,IAAA4vB,OAAA,EAAXA,EAAajtB,SAAU,GAAK,KAAOomC,EAEtC,YADArqC,GAASiiB,EAAAA,EAAAA,KAAgB,IAI3B,MAAM6W,GAAKC,EAAAA,EAAAA,IAAO,GAEZoQ,GAAeC,EAAAA,EAAAA,IACnBjjC,EACAC,EACAyoB,EAAOlY,WACPkY,EAAOvO,MAAQ,EACf,KACAwY,GACCwB,IACCt6B,GACE06B,EAAAA,EAAAA,IAAe,CACbP,WAAY+O,EACZ5O,SAAUA,IAEb,IAEH,KACEt6B,GAAS85B,EAAAA,EAAAA,IAAeoP,GAAkB,IAE3C9O,IACCp6B,GAASk6B,EAAAA,EAAAA,IAAW,CAAEC,WAAY+O,EAAkB9O,QAAO,IAE7D,KACEp6B,GAAS86B,EAAAA,EAAAA,IAAmBoO,GAAkB,IAEhD,KACElpC,GACEoD,EAAAA,EAAAA,IACE,0DAEH,KAIL83B,EAAAA,EAAAA,IAAyBpC,EAAIqQ,GAC7BnpC,GACEm7B,EAAAA,EAAAA,IAAa,CACXrC,KACA3yB,aACAi1B,MAAM,EACNjB,WAAY+O,EACZ7N,WAAY,EACZn7B,OAAQ2uB,EAAOvtB,MAAQ,GACvBmB,KAAM,WACN64B,gBAAgB,EAChBC,QAAQ,EACRC,WAAW,EACX3c,aAAc,KAEjB,C,qFC/EH,MAwCA,EAxCoBlf,IAAmC,IAAlC,MAAEwB,GAA0BxB,EAC/C,MAAO2qC,EAAOC,IAAYnqC,EAAAA,EAAAA,WAAkB,GAE5C,OACEU,EAAAA,EAAAA,MAACiK,EAAAA,IAAG,CACF1I,GAAI,CACFwD,QAAS,OACTE,WAAY,SACZkW,SAAU,MACV,CAAC,sBAAD3W,OAAuBU,EAAAA,IAAYwkC,GAAE,QAAQ,CAC3CvuB,SAAU,WAEZpb,SAAA,EAEFL,EAAAA,EAAAA,KAACU,EAAAA,IAAQ,CACPG,GAAG,kBACHC,KAAK,kBACLC,YAAY,GACZH,MAAM,GACNqB,KAAM6nC,EAAQ,OAAS,WACvB9oC,SAAUA,OACVL,MAAOA,EACPspC,aAAajqC,EAAAA,EAAAA,KAAC+J,EAAAA,IAAQ,IACtBmgC,UAAU,EACVC,cAAeA,IAAMC,UAAUC,UAAUC,UAAU3pC,MAGrDX,EAAAA,EAAAA,KAACgC,EAAAA,IAAM,CACLnB,GAAI,gBACJ6H,MAAO,CACL+E,WAAY,QAEdvL,QAAQ,aACRC,QAASA,IAAM4nC,GAAUD,GACzBlpC,MAAO,gBAEL,C","sources":["screens/Console/Buckets/BucketDetails/AddAccessRule.tsx","screens/Console/Buckets/ListBuckets/UploadPermissionUtils.ts","screens/Console/ObjectBrowser/BrowserBreadcrumbs.tsx","utils/validationFunctions.ts","screens/Console/Buckets/ListBuckets/UploadFilesButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DetailsListPanel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/IconWithLabel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectMetaData.tsx","screens/Console/Common/FormComponents/DateSelector/utils.ts","screens/Console/Common/FormComponents/DateSelector/DateSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetRetention.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetLegalHoldModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/TagsModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/InspectObject.tsx","screens/Console/ObjectBrowser/RenameLongFilename.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/RestoreFileVersion.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SpecificVersionPill.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/FileVersionItem.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteNonCurrent.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/DeleteSelectedVersions.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsTable.tsx","screens/Console/ObjectBrowser/FilterObjectsSB.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx","screens/Console/ObjectBrowser/OBHeader.tsx","screens/Console/Buckets/BucketDetails/BrowserHandler.tsx","screens/Console/Common/FormComponents/DaysSelector/DaysSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ShareFile.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewPDF.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileContent.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileModal.tsx","screens/Console/Common/Components/withSuspense.tsx","screens/Console/ObjectBrowser/objectBrowserThunks.ts","screens/Console/ObjectBrowser/utils.ts","screens/Console/Tools/KeyRevealer.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState, Fragment } from \"react\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport {\n AddAccessRuleIcon,\n Button,\n FormLayout,\n Grid,\n InputBox,\n Select,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IAddAccessRule {\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n prefilledRoute?: string;\n}\n\nconst AddAccessRule = ({\n modalOpen,\n onClose,\n bucket,\n prefilledRoute,\n}: IAddAccessRule) => {\n const dispatch = useAppDispatch();\n\n const [prefix, setPrefix] = useState(\"\");\n const [selectedAccess, setSelectedAccess] = useState(\"readonly\");\n\n useEffect(() => {\n if (prefilledRoute) {\n setPrefix(prefilledRoute);\n }\n }, [prefilledRoute]);\n\n const accessOptions = [\n { label: \"readonly\", value: \"readonly\" },\n { label: \"writeonly\", value: \"writeonly\" },\n { label: \"readwrite\", value: \"readwrite\" },\n ];\n\n const resetForm = () => {\n setPrefix(\"\");\n setSelectedAccess(\"readonly\");\n };\n\n const createProcess = () => {\n api.bucket\n .setAccessRuleWithBucket(bucket, {\n prefix: prefix,\n access: selectedAccess,\n })\n .then((res: any) => {\n dispatch(setSnackBarMessage(\"Access Rule added successfully\"));\n onClose();\n })\n .catch((res) => {\n dispatch(setErrorSnackMessage(errorToHandler(res.error)));\n onClose();\n });\n };\n\n return (\n }\n >\n \n {\n setPrefix(e.target.value);\n }}\n tooltip={\n \"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy.\"\n }\n />\n {\n setSelectedAccess(value);\n }}\n label=\"Access\"\n value={selectedAccess}\n options={accessOptions}\n disabled={false}\n helpTip={\n \n Select the desired level of access available to unauthenticated\n Users\n \n }\n helpTipPlacement=\"right\"\n />\n \n \n\n \n \n \n \n );\n};\n\nexport default AddAccessRule;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const extractFileExtn = (resourceStr: string) => {\n //file extensions may contain query string. so exclude query strings !\n return (resourceStr.match(/\\.([^.]*?)(?=\\?|#|$)/) || [])[1];\n};\nexport const getPolicyAllowedFileExtensions = (\n sessionGrants: Record,\n uploadPath: string,\n scopes: string[] = [],\n) => {\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n uploadPath,\n scopes,\n );\n\n //get acceptable files if any in the policy.\n const allowedFileExtensions = sessionGrantWildCards.reduce(\n (acc: string[], cv: string) => {\n const extension: string = extractFileExtn(cv);\n if (extension) {\n acc.push(`.${extension}`); //strict extension matching.\n }\n return acc;\n },\n [],\n );\n\n const uniqueExtensions = [...new Set(allowedFileExtensions)];\n return uniqueExtensions.join(\",\");\n};\n\n// The resource should not have the extensions (*.ext) for the hasPermission to work.\n// so sanitize this and also use to extract the allowed extensions outside of permission check.\nexport const getSessionGrantsWildCard = (\n sessionGrants: Record,\n uploadPath: string,\n scopes: string[] = [],\n) => {\n //get only the path matching grants to reduce processing.\n const grantsWithExtension = Object.keys(sessionGrants).reduce(\n (acc: Record, grantKey: string) => {\n if (extractFileExtn(grantKey) && grantKey.includes(uploadPath)) {\n acc[grantKey] = sessionGrants[grantKey];\n }\n return acc;\n },\n {},\n );\n\n const checkPathsForPermission = (sessionGrantKey: string) => {\n const grantActions = grantsWithExtension[sessionGrantKey];\n const hasScope = grantActions.some((actionKey) =>\n scopes.find((scopeKey) => {\n let wildCardMatch = false;\n const hasWildCard = scopeKey.indexOf(\"*\") !== -1;\n if (hasWildCard) {\n const scopeActionKey = scopeKey.substring(0, scopeKey.length - 1);\n\n wildCardMatch = actionKey.includes(scopeActionKey);\n }\n\n return wildCardMatch || actionKey === scopeKey;\n }),\n );\n\n const sessionGrantKeyPath = sessionGrantKey.substring(\n 0,\n sessionGrantKey.indexOf(\"/*.\"), //start of extension part.\n );\n const isUploadPathMatching =\n sessionGrantKeyPath === `arn:aws:s3:::${uploadPath}`;\n\n const hasGrant =\n isUploadPathMatching && sessionGrantKey !== \"arn:aws:s3:::*\";\n\n return hasScope && hasGrant;\n };\n\n return Object.keys(grantsWithExtension).filter(checkPathsForPermission);\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport styled from \"styled-components\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { encodeURLString, safeDecodeURIComponent } from \"../../../common/utils\";\nimport {\n Button,\n CopyIcon,\n NewPathIcon,\n Tooltip,\n Breadcrumbs,\n breakPoints,\n Box,\n} from \"mds\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setVersionsModeEnabled } from \"./objectBrowserSlice\";\nimport { getSessionGrantsWildCard } from \"../Buckets/ListBuckets/UploadPermissionUtils\";\n\nconst CreatePathModal = withSuspense(\n React.lazy(\n () => import(\"../Buckets/ListBuckets/Objects/ListObjects/CreatePathModal\"),\n ),\n);\n\nconst BreadcrumbsMain = styled.div(() => ({\n display: \"flex\",\n \"& .additionalOptions\": {\n paddingRight: \"10px\",\n display: \"flex\",\n alignItems: \"center\",\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n display: \"none\",\n },\n },\n \"& .slashSpacingStyle\": {\n margin: \"0 5px\",\n },\n}));\n\ninterface IObjectBrowser {\n bucketName: string;\n internalPaths: string;\n hidePathButton?: boolean;\n additionalOptions?: React.ReactNode;\n}\n\nconst BrowserBreadcrumbs = ({\n bucketName,\n internalPaths,\n hidePathButton,\n additionalOptions,\n}: IObjectBrowser) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const [createFolderOpen, setCreateFolderOpen] = useState(false);\n const [canCreateSubpath, setCanCreateSubpath] = useState(false);\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\n\n let paths = internalPaths;\n\n if (internalPaths !== \"\") {\n paths = `/${internalPaths}`;\n }\n\n const splitPaths = paths.split(\"/\").filter((path) => path !== \"\");\n const lastBreadcrumbsIndex = splitPaths.length - 1;\n\n const pathToCheckPerms = bucketName + paths || bucketName;\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n pathToCheckPerms,\n putObjectPermScopes,\n );\n\n useEffect(() => {\n setCanCreateSubpath(false);\n Object.keys(sessionGrants).forEach((grant) => {\n grant.includes(pathToCheckPerms) &&\n grant.includes(\"/*\") &&\n setCanCreateSubpath(true);\n });\n }, [pathToCheckPerms, internalPaths, sessionGrants]);\n\n const canCreatePath =\n hasPermission(\n [pathToCheckPerms, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) ||\n anonymousMode ||\n canCreateSubpath;\n\n let breadcrumbsMap = splitPaths.map((objectItem: string, index: number) => {\n const subSplit = `${splitPaths.slice(0, index + 1).join(\"/\")}/`;\n const route = `/browser/${bucketName}/${\n subSplit ? `${encodeURLString(subSplit)}` : ``\n }`;\n\n if (index === lastBreadcrumbsIndex && objectItem === versionedFile) {\n return null;\n }\n\n return (\n \n /\n {index === lastBreadcrumbsIndex ? (\n \n {safeDecodeURIComponent(objectItem) /*Only for display*/}\n \n ) : (\n {\n dispatch(\n setVersionsModeEnabled({ status: false, objectName: \"\" }),\n );\n }}\n >\n {\n safeDecodeURIComponent(\n objectItem,\n ) /*Only for display to preserve */\n }\n \n )}\n \n );\n });\n\n let versionsItem: any[] = [];\n\n if (versionsMode) {\n versionsItem = [\n \n \n /\n {versionedFile} - Versions\n \n ,\n ];\n }\n\n const listBreadcrumbs: any[] = [\n \n {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n }}\n >\n {bucketName}\n \n ,\n ...breadcrumbsMap,\n ...versionsItem,\n ];\n\n const closeAddFolderModal = () => {\n setCreateFolderOpen(false);\n };\n\n const goBackFunction = () => {\n if (versionsMode) {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n } else {\n if (splitPaths.length === 0) {\n navigate(\"/browser\");\n\n return;\n }\n\n const prevPath = splitPaths.slice(0, -1);\n\n navigate(\n `/browser/${bucketName}${\n prevPath.length > 0\n ? `/${encodeURLString(`${prevPath.join(\"/\")}/`)}`\n : \"\"\n }`,\n );\n }\n };\n\n return (\n \n \n {createFolderOpen && (\n \n )}\n \n \n \n }\n variant={\"regular\"}\n onClick={() => {\n dispatch(setSnackBarMessage(\"Path copied to clipboard\"));\n }}\n style={{\n width: \"28px\",\n height: \"28px\",\n color: \"#969FA8\",\n border: \"#969FA8 1px solid\",\n marginRight: 5,\n }}\n />\n \n {additionalOptions}\n \n }\n >\n {listBreadcrumbs}\n \n {!hidePathButton && (\n \n {\n setCreateFolderOpen(true);\n }}\n disabled={anonymousMode ? false : rewindEnabled || !canCreatePath}\n icon={}\n style={{\n whiteSpace: \"nowrap\",\n }}\n variant={\"regular\"}\n label={\"Create new path\"}\n />\n \n )}\n \n div\": {\n fontSize: 12,\n fontWeight: \"normal\",\n flexDirection: \"row\",\n flexWrap: \"nowrap\",\n },\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n display: \"flex\",\n },\n }}\n >\n {additionalOptions}\n \n \n );\n};\n\nexport default BrowserBreadcrumbs;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const isVersionedMode = (status: string | undefined) => {\n return status === \"Enabled\" || status === \"Suspended\";\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { CSSObject } from \"styled-components\";\nimport { Button, DropdownSelector, UploadFolderIcon, UploadIcon } from \"mds\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../common/SecureComponent\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState } from \"../../../../store\";\nimport { getSessionGrantsWildCard } from \"./UploadPermissionUtils\";\n\ninterface IUploadFilesButton {\n uploadPath: string;\n bucketName: string;\n forceDisable?: boolean;\n uploadFileFunction: (closeFunction: () => void) => void;\n uploadFolderFunction: (closeFunction: () => void) => void;\n overrideStyles?: CSSObject;\n}\n\nconst UploadFilesButton = ({\n uploadPath,\n bucketName,\n forceDisable = false,\n uploadFileFunction,\n uploadFolderFunction,\n overrideStyles = {},\n}: IUploadFilesButton) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [uploadOptionsOpen, uploadOptionsSetOpen] = useState(false);\n\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n uploadPath,\n putObjectPermScopes,\n );\n\n const openUploadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n uploadOptionsSetOpen(!uploadOptionsOpen);\n setAnchorEl(event.currentTarget);\n };\n const handleCloseUpload = () => {\n setAnchorEl(null);\n };\n\n const uploadObjectAllowed =\n hasPermission(\n [uploadPath, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) || anonymousMode;\n\n const uploadFolderAllowed = hasPermission(\n [bucketName, ...sessionGrantWildCards],\n putObjectPermScopes,\n false,\n true,\n );\n\n const uploadFolderAction = (action: string) => {\n if (action === \"folder\") {\n uploadFolderFunction(handleCloseUpload);\n return;\n }\n\n uploadFileFunction(handleCloseUpload);\n };\n\n const uploadEnabled: boolean = uploadObjectAllowed || uploadFolderAllowed;\n\n return (\n \n \n }\n variant={\"callAction\"}\n disabled={forceDisable || !uploadEnabled}\n sx={overrideStyles}\n />\n \n ,\n value: \"file\",\n disabled: !uploadObjectAllowed || forceDisable,\n },\n {\n label: \"Upload Folder\",\n icon: ,\n value: \"folder\",\n disabled: !uploadFolderAllowed || forceDisable,\n },\n ]}\n selectedOption={\"\"}\n onSelect={(nValue) => uploadFolderAction(nValue)}\n hideTriggerAction={() => {\n uploadOptionsSetOpen(false);\n }}\n open={uploadOptionsOpen}\n anchorEl={anchorEl}\n anchorOrigin={\"end\"}\n useAnchorWidth\n />\n \n );\n};\n\nexport default UploadFilesButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Button, ClosePanelIcon } from \"mds\";\n\ninterface IDetailsListPanel {\n open: boolean;\n className?: string;\n closePanel: () => void;\n children: React.ReactNode;\n}\n\nconst DetailsListPanel = ({\n open,\n closePanel,\n className = \"\",\n children,\n}: IDetailsListPanel) => {\n return (\n \n }\n sx={{\n position: \"absolute\",\n right: 5,\n top: 18,\n padding: 0,\n height: 14,\n \"&:hover:not(:disabled)\": {\n backgroundColor: \"transparent\",\n },\n }}\n />\n {children}\n \n );\n};\n\nexport default DetailsListPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This object contains variables that will be used across form components.\n\nimport React from \"react\";\nimport { Box } from \"mds\";\nimport { replaceUnicodeChar } from \"../../../../../../common/utils\";\n\ninterface IIconWithLabel {\n icon: React.ReactNode;\n strings: string[];\n}\n\nconst IconWithLabel = ({ icon, strings }: IIconWithLabel) => {\n return (\n \n {icon}\n \n {replaceUnicodeChar(strings[strings.length - 1])}\n \n \n );\n};\n\nexport default IconWithLabel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nimport {\n FileBookIcon,\n FileCodeIcon,\n FileConfigIcon,\n FileDbIcon,\n FileFontIcon,\n FileImageIcon,\n FileLockIcon,\n FileMissingIcon,\n FileMusicIcon,\n FileNonType,\n FilePdfIcon,\n FilePptIcon,\n FileTxtIcon,\n FileVideoIcon,\n FileXlsIcon,\n FileZipIcon,\n FolderBrowserIcon,\n} from \"mds\";\nimport IconWithLabel from \"./IconWithLabel\";\n\ninterface IExtToIcon {\n icon: any;\n extensions: string[];\n}\n\nexport const extensionToIcon: IExtToIcon[] = [\n {\n icon: ,\n extensions: [\"mp4\", \"mov\", \"avi\", \"mpeg\", \"mpg\"],\n },\n {\n icon: ,\n extensions: [\"mp3\", \"m4a\", \"aac\"],\n },\n {\n icon: ,\n extensions: [\"pdf\"],\n },\n {\n icon: ,\n extensions: [\"ppt\", \"pptx\"],\n },\n {\n icon: ,\n extensions: [\"xls\", \"xlsx\"],\n },\n {\n icon: ,\n extensions: [\"cer\", \"crt\", \"pem\"],\n },\n {\n icon: ,\n extensions: [\"html\", \"xml\", \"css\", \"py\", \"go\", \"php\", \"cpp\", \"h\", \"java\"],\n },\n {\n icon: ,\n extensions: [\"cfg\", \"yaml\"],\n },\n {\n icon: ,\n extensions: [\"sql\"],\n },\n {\n icon: ,\n extensions: [\"ttf\", \"otf\"],\n },\n {\n icon: ,\n extensions: [\"doc\", \"docx\", \"txt\", \"rtf\"],\n },\n {\n icon: ,\n extensions: [\"zip\", \"rar\", \"tar\", \"gz\"],\n },\n {\n icon: ,\n extensions: [\"epub\", \"mobi\", \"azw\", \"azw3\"],\n },\n {\n icon: ,\n extensions: [\"jpeg\", \"jpg\", \"gif\", \"tiff\", \"png\", \"heic\", \"dng\"],\n },\n];\n\nexport const displayFileIconName = (\n element: string,\n returnOnlyIcon: boolean = false,\n) => {\n let elementString = element;\n let icon = ;\n // Element is a folder\n if (element.endsWith(\"/\")) {\n icon = ;\n elementString = element.slice(0, -1);\n }\n\n const lowercaseElement = element.toLowerCase();\n for (const etc of extensionToIcon) {\n for (const ext of etc.extensions) {\n if (lowercaseElement.endsWith(`.${ext}`)) {\n icon = etc.icon;\n }\n }\n }\n\n if (!element.endsWith(\"/\") && element.indexOf(\".\") < 0) {\n icon = ;\n }\n\n const splitItem = elementString.split(\"/\");\n\n if (returnOnlyIcon) {\n return icon;\n }\n\n return ;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Box } from \"mds\";\nimport { safeDecodeURIComponent } from \"../../../../../../common/utils\";\n\ninterface IObjectMetadata {\n metaData: any;\n}\n\nconst itemRendererFn = (element: any) => {\n return Array.isArray(element)\n ? element.map(safeDecodeURIComponent).join(\", \")\n : safeDecodeURIComponent(element);\n};\n\nconst ObjectMetaData = ({ metaData }: IObjectMetadata) => {\n const metaKeys = Object.keys(metaData);\n\n return (\n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = itemRendererFn(metaData[element]);\n return (\n \n {element}\n
\n {renderItem}\n \n );\n })}\n
\n );\n};\n\nexport default ObjectMetaData;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const months = [\n { value: \"01\", label: \"January\" },\n { value: \"02\", label: \"February\" },\n { value: \"03\", label: \"March\" },\n { value: \"04\", label: \"April\" },\n { value: \"05\", label: \"May\" },\n { value: \"06\", label: \"June\" },\n { value: \"07\", label: \"July\" },\n { value: \"08\", label: \"August\" },\n { value: \"09\", label: \"September\" },\n { value: \"10\", label: \"October\" },\n { value: \"11\", label: \"November\" },\n { value: \"12\", label: \"December\" },\n];\n\nexport const days = Array.from(Array(31), (_, num) => ({\n value: (num + 1).toString(),\n label: (num + 1).toString(),\n}));\n\nconst currentYear = new Date().getFullYear();\n\nexport const years = Array.from(Array(50), (_, numYear) => ({\n value: (numYear + currentYear).toString(),\n label: (numYear + currentYear).toString(),\n}));\n\nexport const validDate = (year: string, month: string, day: string): any[] => {\n const currentDate = Date.parse(`${year}-${month}-${day}`);\n\n if (isNaN(currentDate)) {\n return [false, \"\"];\n }\n\n const parsedMonth = parseInt(month);\n const parsedDay = parseInt(day);\n\n const monthForString = parsedMonth < 10 ? `0${parsedMonth}` : parsedMonth;\n const dayForString = parsedDay < 10 ? `0${parsedDay}` : parsedDay;\n\n const parsedDate = new Date(currentDate).toISOString().split(\"T\")[0];\n const dateString = `${year}-${monthForString}-${dayForString}`;\n\n return [parsedDate === dateString, dateString];\n};\n\n// twoDigitDate gets a two digit string number used for months or days\n// returns \"NaN\" if number is NaN\nexport const twoDigitDate = (num: number): string => {\n return num < 10 ? `0${num}` : `${num}`;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n} from \"react\";\nimport { Box, HelpIcon, InputLabel, Select, Tooltip } from \"mds\";\nimport { days, months, validDate, years } from \"./utils\";\n\ninterface IDateSelectorProps {\n id: string;\n label: string;\n disableOptions?: boolean;\n tooltip?: string;\n borderBottom?: boolean;\n value?: string;\n onDateChange: (date: string, isValid: boolean) => any;\n}\n\nconst DateSelector = forwardRef(\n (\n {\n id,\n label,\n disableOptions = false,\n tooltip = \"\",\n borderBottom = false,\n onDateChange,\n value = \"\",\n }: IDateSelectorProps,\n ref: any,\n ) => {\n useImperativeHandle(ref, () => ({ resetDate }));\n\n const [month, setMonth] = useState(\"\");\n const [day, setDay] = useState(\"\");\n const [year, setYear] = useState(\"\");\n\n useEffect(() => {\n // verify if there is a current value\n // assume is in the format \"2021-12-30\"\n if (value !== \"\") {\n const valueSplit = value.split(\"-\");\n\n setYear(valueSplit[0]);\n setMonth(valueSplit[1]);\n // Turn to single digit to be displayed on dropdown buttons\n setDay(`${parseInt(valueSplit[2])}`);\n }\n }, [value]);\n\n useEffect(() => {\n const [isValid, dateString] = validDate(year, month, day);\n onDateChange(dateString, isValid);\n }, [month, day, year, onDateChange]);\n\n const resetDate = () => {\n setMonth(\"\");\n setDay(\"\");\n setYear(\"\");\n };\n\n const isDateDisabled = () => {\n if (disableOptions) {\n return disableOptions;\n } else {\n return false;\n }\n };\n\n const monthForDropDown = [{ value: \"\", label: \"\" }, ...months];\n const daysForDrop = [{ value: \"\", label: \"\" }, ...days];\n const yearsForDrop = [{ value: \"\", label: \"\" }, ...years];\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n \n \n )}\n \n \n \n {\n setMonth(newValue);\n }}\n options={monthForDropDown}\n label={\"\"}\n disabled={isDateDisabled()}\n />\n\n {\n setDay(newValue);\n }}\n options={daysForDrop}\n label={\"\"}\n disabled={isDateDisabled()}\n />\n\n {\n setYear(newValue);\n }}\n options={yearsForDrop}\n label={\"\"}\n disabled={isDateDisabled()}\n sx={{\n marginBottom: 12,\n }}\n />\n \n \n );\n },\n);\n\nexport default DateSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { Box, Button, FormLayout, Grid, RadioGroup, Switch } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { BucketObject, ObjectRetentionMode } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { encodeURLString } from \"common/utils\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { twoDigitDate } from \"../../../../Common/FormComponents/DateSelector/utils\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport DateSelector from \"../../../../Common/FormComponents/DateSelector/DateSelector\";\n\ninterface ISetRetentionProps {\n open: boolean;\n closeModalAndRefresh: (updateInfo: boolean) => void;\n objectName: string;\n bucketName: string;\n objectInfo: BucketObject;\n}\n\ninterface IRefObject {\n resetDate: () => void;\n}\n\nconst SetRetention = ({\n open,\n closeModalAndRefresh,\n objectName,\n objectInfo,\n bucketName,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const [statusEnabled, setStatusEnabled] = useState(true);\n const [type, setType] = useState(\"\");\n const [date, setDate] = useState(\"\");\n const [isDateValid, setIsDateValid] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [alreadyConfigured, setAlreadyConfigured] = useState(false);\n\n useEffect(() => {\n if (objectInfo.retention_mode) {\n setType(retentionConfig?.mode || ObjectRetentionMode.Governance);\n setAlreadyConfigured(true);\n }\n // get retention_until_date if defined\n if (objectInfo.retention_until_date) {\n const valueDate = new Date(objectInfo.retention_until_date);\n if (valueDate.toString() !== \"Invalid Date\") {\n const year = valueDate.getFullYear();\n const month = twoDigitDate(valueDate.getMonth() + 1);\n const day = valueDate.getDate();\n if (!isNaN(day) && month !== \"NaN\" && !isNaN(year)) {\n setDate(`${year}-${month}-${day}`);\n }\n }\n setAlreadyConfigured(true);\n }\n }, [objectInfo, retentionConfig?.mode]);\n\n const dateElement = useRef(null);\n\n const dateFieldDisabled = () => {\n return !(statusEnabled && (type === \"governance\" || type === \"compliance\"));\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n const resetForm = () => {\n setStatusEnabled(false);\n setType(ObjectRetentionMode.Governance);\n if (dateElement.current) {\n dateElement.current.resetDate();\n }\n };\n\n const addRetention = (\n selectedObject: string,\n versionId: string | null,\n expireDate: string,\n ) => {\n api.buckets\n .putObjectRetention(\n bucketName,\n {\n prefix: encodeURLString(selectedObject),\n version_id: versionId || \"\",\n },\n {\n expires: expireDate,\n mode: type as ObjectRetentionMode,\n },\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const disableRetention = (\n selectedObject: string,\n versionId: string | null,\n ) => {\n api.buckets\n .deleteObjectRetention(bucketName, {\n prefix: encodeURLString(selectedObject),\n version_id: versionId || \"\",\n })\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const saveNewRetentionPolicy = () => {\n setIsSaving(true);\n const selectedObject = objectInfo.name || \"\";\n const versionId = objectInfo.version_id || null;\n\n const expireDate =\n !statusEnabled && type === \"governance\" ? \"\" : `${date}T23:59:59Z`;\n\n if (!statusEnabled && type === \"governance\") {\n disableRetention(selectedObject, versionId);\n\n return;\n }\n\n addRetention(selectedObject, versionId, expireDate);\n };\n\n const showSwitcher =\n alreadyConfigured && (type === \"governance\" || type === \"\");\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n ) => {\n onSubmit(e);\n }}\n >\n \n \n Selected Object: {objectName}\n \n {showSwitcher && (\n ) => {\n setStatusEnabled(!statusEnabled);\n }}\n label={\"Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n )}\n {\n setType(e.target.value as ObjectRetentionMode);\n }}\n selectorOptions={[\n { label: \"Governance\", value: ObjectRetentionMode.Governance },\n { label: \"Compliance\", value: ObjectRetentionMode.Compliance },\n ]}\n />\n {\n setIsDateValid(isValid);\n if (isValid) {\n setDate(date);\n }\n }}\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default SetRetention;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { isVersionedMode } from \"../../../../../../utils/validationFunctions\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n\n versioningInfo: BucketVersioningResponse | undefined;\n selectedVersion?: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n versioningInfo,\n selectedVersion = \"\",\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n\n // We close the modal box on access denied.\n if (err.detailedError === \"Access Denied.\") {\n closeDeleteModalAndRefresh(true);\n }\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n const [deleteVersions, setDeleteVersions] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n const decodedSelectedObject = decodeURLString(selectedObject);\n const recursive = decodedSelectedObject.endsWith(\"/\");\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/objects?prefix=${selectedObject}${\n selectedVersion !== \"\"\n ? `&version_id=${selectedVersion}`\n : `&recursive=${recursive}&all_versions=${deleteVersions}`\n }${bypassGovernance ? \"&bypass=true\" : \"\"}`,\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete:
\n {decodeURLString(selectedObject)}{\" \"}\n {selectedVersion !== \"\" ? (\n \n
\n
\n Version ID:\n
\n {selectedVersion}\n
\n ) : (\n \"\"\n )}\n ?
\n
\n {isVersionedMode(versioningInfo?.status) &&\n selectedVersion === \"\" && (\n \n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n \n )}\n {canBypass && (deleteVersions || selectedVersion !== \"\") && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n {deleteVersions && (\n \n \n This will remove the object as well as all of its versions,{\" \"}\n
\n This action is irreversible.\n \n
\n Are you sure you want to continue?\n
\n )}\n
\n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Box, Button, FormLayout, Grid, Switch } from \"mds\";\nimport { BucketObject, ObjectLegalHoldStatus } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\n\ninterface ISetRetentionProps {\n open: boolean;\n closeModalAndRefresh: (reload: boolean) => void;\n objectName: string;\n bucketName: string;\n actualInfo: BucketObject;\n}\n\nconst SetLegalHoldModal = ({\n open,\n closeModalAndRefresh,\n objectName,\n bucketName,\n actualInfo,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [legalHoldEnabled, setLegalHoldEnabled] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const versionId = actualInfo.version_id;\n\n useEffect(() => {\n const status = get(actualInfo, \"legal_hold_status\", \"OFF\");\n setLegalHoldEnabled(status === \"ON\");\n }, [actualInfo]);\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setIsSaving(true);\n\n api.buckets\n .putObjectLegalHold(\n bucketName,\n {\n prefix: encodeURLString(objectName),\n version_id: versionId || \"\",\n },\n {\n status: legalHoldEnabled\n ? ObjectLegalHoldStatus.Enabled\n : ObjectLegalHoldStatus.Disabled,\n },\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const resetForm = () => {\n setLegalHoldEnabled(false);\n };\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n ) => {\n onSubmit(e);\n }}\n >\n \n \n Object: {bucketName}\n \n ) => {\n setLegalHoldEnabled(!legalHoldEnabled);\n }}\n label={\"Legal Hold Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n tooltip={\n \"To enable this feature you need to enable versioning on the bucket before creation\"\n }\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default SetLegalHoldModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport {\n AddNewTagIcon,\n Button,\n DisabledIcon,\n EditTagIcon,\n InputBox,\n SectionTitle,\n Box,\n Grid,\n Tag,\n FormLayout,\n} from \"mds\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { encodeURLString } from \"common/utils\";\nimport { useSelector } from \"react-redux\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../../common/SecureComponent\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface ITagModal {\n modalOpen: boolean;\n bucketName: string;\n actualInfo: BucketObject;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst DeleteTag = styled.b(({ theme }) => ({\n color: get(theme, \"signalColors.danger\", \"#C83B51\"),\n marginLeft: 5,\n}));\n\nconst AddTagModal = ({\n modalOpen,\n onCloseAndUpdate,\n bucketName,\n actualInfo,\n}: ITagModal) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n const [deleteEnabled, setDeleteEnabled] = useState(false);\n const [deleteKey, setDeleteKey] = useState(\"\");\n const [deleteLabel, setDeleteLabel] = useState(\"\");\n\n const selectedObject = encodeURLString(actualInfo.name || \"\");\n\n const currentTags = actualInfo.tags;\n const currTagKeys = Object.keys(currentTags || {});\n\n const allPathData = actualInfo.name?.split(\"/\");\n const currentItem = allPathData?.pop() || \"\";\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n const verID = distributedSetup ? actualInfo.version_id || \"\" : \"null\";\n\n api.buckets\n .putObjectTags(\n bucketName,\n { prefix: selectedObject, version_id: verID },\n { tags: newTagList },\n )\n .then(() => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSending(false);\n });\n };\n\n const deleteTagProcess = () => {\n const cleanObject: any = { ...currentTags };\n delete cleanObject[deleteKey];\n\n const verID = distributedSetup ? actualInfo.version_id || \"\" : \"null\";\n\n api.buckets\n .putObjectTags(\n bucketName,\n { prefix: selectedObject, version_id: verID },\n { tags: cleanObject },\n )\n .then(() => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSending(false);\n });\n };\n\n const onDeleteTag = (tagKey: string, tag: string) => {\n setDeleteKey(tagKey);\n setDeleteLabel(tag);\n setDeleteEnabled(true);\n };\n\n const cancelDelete = () => {\n setDeleteKey(\"\");\n setDeleteLabel(\"\");\n setDeleteEnabled(false);\n };\n\n const tagsFor = (plural: boolean) => (\n \n Tag{plural ? \"s\" : \"\"} for: {currentItem}\n \n );\n\n return (\n \n {\n onCloseAndUpdate(true);\n }}\n iconColor={deleteEnabled ? \"delete\" : \"default\"}\n titleIcon={deleteEnabled ? : }\n >\n {deleteEnabled ? (\n \n \n {tagsFor(false)}\n Are you sure you want to delete the tag{\" \"}\n \n {deleteKey} : {deleteLabel}\n {\" \"}\n ?\n \n \n \n \n \n \n ) : (\n \n \n \n {tagsFor(true)}\n \n Current Tags:\n
\n {currTagKeys.length === 0 ? (\n \n There are no tags for this object\n \n ) : (\n \n )}\n \n {currTagKeys.map((tagKey: string, index: number) => {\n const tag = get(currentTags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n {\n onDeleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n
\n \n \n \n \n } separator={false}>\n Add New Tag\n \n \n {\n setNewKey(e.target.value);\n }}\n />\n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n \n )}\n \n
\n );\n};\n\nexport default AddTagModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport {\n Button,\n InspectMenuIcon,\n PasswordKeyIcon,\n Switch,\n Grid,\n Box,\n} from \"mds\";\nimport {\n decodeURLString,\n deleteCookie,\n encodeURLString,\n getCookieValue,\n performDownload,\n} from \"../../../../../../common/utils\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport KeyRevealer from \"../../../../Tools/KeyRevealer\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface IInspectObjectProps {\n closeInspectModalAndRefresh: (refresh: boolean) => void;\n inspectOpen: boolean;\n inspectPath: string;\n volumeName: string;\n}\n\nconst InspectObject = ({\n closeInspectModalAndRefresh,\n inspectOpen,\n inspectPath,\n volumeName,\n}: IInspectObjectProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeInspectModalAndRefresh(false);\n const [isEncrypt, setIsEncrypt] = useState(true);\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n const [insFileName, setInsFileName] = useState(\"\");\n\n if (!inspectPath) {\n return null;\n }\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n const file = encodeURLString(inspectPath + \"/xl.meta\");\n const volume = encodeURLString(volumeName);\n\n let basename = document.baseURI.replace(window.location.origin, \"\");\n const urlOfInspectApi = `${window.location.origin}${basename}/api/v1/admin/inspect?volume=${volume}&file=${file}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n }),\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n if (decryptKey === \"\") {\n onClose();\n return;\n }\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n onClose();\n setDecryptionKey(\"\");\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n return (\n \n {!decryptionKey && (\n }\n title={`Inspect Object`}\n onClose={onClose}\n >\n ) => {\n onSubmit(e);\n }}\n >\n Would you like to encrypt {decodeURLString(inspectPath)}?{\" \"}\n
\n {\n setIsEncrypt(!isEncrypt);\n }}\n description=\"\"\n />\n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n This will be displayed only once. It cannot be recovered.\n
\n Use secure medium to share this key.\n
\n \n \n \n \n ) : null}\n
\n );\n};\n\nexport default InspectObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button, EditIcon, FormLayout, Grid, InputBox, Switch } from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { useAppDispatch } from \"../../../store\";\nimport { downloadObject } from \"./utils\";\nimport { BucketObject } from \"api/consoleApi\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface IRenameLongFilename {\n open: boolean;\n bucketName: string;\n internalPaths: string;\n currentItem: string;\n actualInfo: BucketObject;\n closeModal: () => void;\n}\n\nconst RenameLongFileName = ({\n open,\n closeModal,\n currentItem,\n internalPaths,\n actualInfo,\n bucketName,\n}: IRenameLongFilename) => {\n const dispatch = useAppDispatch();\n\n const [newFileName, setNewFileName] = useState(currentItem);\n const [acceptLongName, setAcceptLongName] = useState(false);\n\n const doDownload = (e: React.FormEvent) => {\n e.preventDefault();\n downloadObject(dispatch, bucketName, internalPaths, actualInfo);\n closeModal();\n };\n\n return (\n }\n >\n
\n The file you are trying to download has a long name.\n
\n This can cause issues on Windows Systems by trimming the file name after\n download.\n
\n
We recommend to rename the file download\n
\n ) => {\n doDownload(e);\n }}\n >\n \n ) => {\n setNewFileName(event.target.value);\n }}\n label=\"\"\n type={\"text\"}\n value={newFileName}\n error={\n newFileName.length > 200 && !acceptLongName\n ? \"Filename should be less than 200 characters long.\"\n : \"\"\n }\n />\n ) => {\n setAcceptLongName(event.target.checked);\n if (event.target.checked) {\n setNewFileName(currentItem);\n }\n }}\n label={\"Use Original Name\"}\n />\n \n 200 && !acceptLongName}\n label={\"Download File\"}\n />\n \n \n \n \n );\n};\n\nexport default RenameLongFileName;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport {\n ActionsList,\n Box,\n Button,\n DeleteIcon,\n DownloadIcon,\n Grid,\n InspectMenuIcon,\n LegalHoldIcon,\n Loader,\n MetadataIcon,\n ObjectInfoIcon,\n PreviewIcon,\n RetentionIcon,\n ShareIcon,\n SimpleHeader,\n TagsIcon,\n VersionsIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { BucketObject, BucketVersioningResponse } from \"api/consoleApi\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport {\n decodeURLString,\n niceBytes,\n niceBytesInt,\n niceDaysInt,\n} from \"../../../../../../common/utils\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport { selDistSet } from \"../../../../../../systemSlice\";\nimport {\n setLoadingObjectInfo,\n setLoadingVersions,\n setSelectedVersion,\n setVersionsModeEnabled,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { displayFileIconName } from \"./utils\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport ObjectMetaData from \"../ObjectDetails/ObjectMetaData\";\nimport ShareFile from \"../ObjectDetails/ShareFile\";\nimport SetRetention from \"../ObjectDetails/SetRetention\";\nimport DeleteObject from \"../ListObjects/DeleteObject\";\nimport SetLegalHoldModal from \"../ObjectDetails/SetLegalHoldModal\";\nimport TagsModal from \"../ObjectDetails/TagsModal\";\nimport InspectObject from \"./InspectObject\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst emptyFile: BucketObject = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: 0,\n tags: {},\n version_id: undefined,\n};\n\ninterface IObjectDetailPanelProps {\n internalPaths: string;\n bucketName: string;\n versioningInfo: BucketVersioningResponse;\n locking: boolean | undefined;\n onClosePanel: (hardRefresh: boolean) => void;\n}\n\nconst ObjectDetailPanel = ({\n internalPaths,\n bucketName,\n versioningInfo,\n locking,\n onClosePanel,\n}: IObjectDetailPanelProps) => {\n const dispatch = useAppDispatch();\n\n const distributedSetup = useSelector(selDistSet);\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion,\n );\n const loadingObjectInfo = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjectInfo,\n );\n\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [retentionModalOpen, setRetentionModalOpen] = useState(false);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [legalholdOpen, setLegalholdOpen] = useState(false);\n const [inspectModalOpen, setInspectModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [allInfoElements, setAllInfoElements] = useState([]);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [totalVersionsSize, setTotalVersionsSize] = useState(0);\n const [longFileOpen, setLongFileOpen] = useState(false);\n const [metaData, setMetaData] = useState(null);\n const [loadMetadata, setLoadingMetadata] = useState(false);\n\n const internalPathsDecoded = decodeURLString(internalPaths) || \"\";\n const allPathData = internalPathsDecoded.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo && actualInfo.name) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (distributedSetup && allInfoElements && allInfoElements.length >= 1) {\n let infoElement =\n allInfoElements.find((el: BucketObject) => el.is_latest) || emptyFile;\n\n if (selectedVersion !== \"\") {\n infoElement =\n allInfoElements.find(\n (el: BucketObject) => el.version_id === selectedVersion,\n ) || emptyFile;\n }\n\n if (!infoElement.is_delete_marker) {\n setLoadingMetadata(true);\n }\n\n setActualInfo(infoElement);\n }\n }, [selectedVersion, distributedSetup, allInfoElements]);\n\n useEffect(() => {\n if (loadingObjectInfo && internalPaths !== \"\") {\n api.buckets\n .listObjects(bucketName, {\n prefix: internalPaths,\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result: BucketObject[] = res.data.objects || [];\n if (distributedSetup) {\n setAllInfoElements(result);\n setVersions(result);\n\n const tVersionSize = result.reduce(\n (acc: number, currValue: BucketObject): number => {\n if (currValue?.size) {\n return acc + currValue.size;\n }\n return acc;\n },\n 0,\n );\n\n setTotalVersionsSize(tVersionSize);\n } else {\n const resInfo = result[0];\n\n setActualInfo(resInfo);\n setVersions([]);\n\n if (!resInfo.is_delete_marker) {\n setLoadingMetadata(true);\n }\n }\n\n dispatch(setLoadingObjectInfo(false));\n })\n .catch((err) => {\n console.error(\"Error loading object details\", err.error);\n dispatch(setLoadingObjectInfo(false));\n });\n }\n }, [\n loadingObjectInfo,\n bucketName,\n internalPaths,\n dispatch,\n distributedSetup,\n selectedVersion,\n ]);\n\n useEffect(() => {\n if (loadMetadata && internalPaths !== \"\") {\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: internalPaths,\n versionID: actualInfo?.version_id || \"\",\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n\n setMetaData(metadata);\n setLoadingMetadata(false);\n })\n .catch((err) => {\n console.error(\"Error Getting Metadata Status: \", err.detailedError);\n setLoadingMetadata(false);\n });\n }\n }, [bucketName, internalPaths, loadMetadata, actualInfo?.version_id]);\n\n let tagKeys: string[] = [];\n\n if (actualInfo && actualInfo.tags) {\n tagKeys = Object.keys(actualInfo.tags);\n }\n\n const openRetentionModal = () => {\n setRetentionModalOpen(true);\n };\n\n const closeRetentionModal = (updateInfo: boolean) => {\n setRetentionModalOpen(false);\n if (updateInfo) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n };\n\n const closeFileOpen = () => {\n setLongFileOpen(false);\n };\n\n const closeDeleteModal = (closeAndReload: boolean) => {\n setDeleteOpen(false);\n\n if (closeAndReload && selectedVersion === \"\") {\n onClosePanel(true);\n } else {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeAddTagModal = (reloadObjectData: boolean) => {\n setTagModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeInspectModal = (reloadObjectData: boolean) => {\n setInspectModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeLegalholdModal = (reload: boolean) => {\n setLegalholdOpen(false);\n if (reload) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const loaderForContainer = (\n
\n \n
\n );\n\n if (!actualInfo) {\n if (loadingObjectInfo) {\n return loaderForContainer;\n }\n\n return null;\n }\n\n const objectName =\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name;\n\n const objectResources = [\n bucketName,\n currentItem,\n [bucketName, actualInfo.name].join(\"/\"),\n ];\n const canSetLegalHold = hasPermission(bucketName, [\n IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canSetTags = hasPermission(objectResources, [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const canChangeRetention = hasPermission(\n objectResources,\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n true,\n );\n const canInspect = hasPermission(objectResources, [\n IAM_SCOPES.ADMIN_INSPECT_DATA,\n ]);\n const canChangeVersioning = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canGetObject = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n const canDelete = hasPermission(\n [bucketName, currentItem, [bucketName, actualInfo.name].join(\"/\")],\n [IAM_SCOPES.S3_DELETE_OBJECT],\n );\n\n let objectType: AllowedPreviews = previewObjectType(metaData, currentItem);\n\n const multiActionButtons = [\n {\n action: () => {\n downloadObject(dispatch, bucketName, internalPaths, actualInfo);\n },\n label: \"Download\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Download this Object\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download this object\",\n ),\n },\n {\n action: () => {\n shareObject();\n },\n label: \"Share\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Share this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"share this object\",\n ),\n },\n {\n action: () => {\n setPreviewOpen(true);\n },\n label: \"Preview\",\n disabled:\n !!actualInfo.is_delete_marker ||\n (objectType === \"none\" && !canGetObject),\n icon: ,\n tooltip: canGetObject\n ? \"Preview this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"preview this object\",\n ),\n },\n {\n action: () => {\n setLegalholdOpen(true);\n },\n label: \"Legal Hold\",\n disabled:\n !locking ||\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canSetLegalHold ||\n selectedVersion !== \"\",\n icon: ,\n tooltip: canSetLegalHold\n ? locking\n ? \"Change Legal Hold rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Legal Hold\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD, IAM_SCOPES.S3_PUT_ACTIONS],\n \"change legal hold settings for this object\",\n ),\n },\n {\n action: openRetentionModal,\n label: \"Retention\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canChangeRetention ||\n selectedVersion !== \"\" ||\n !locking,\n icon: ,\n tooltip: canChangeRetention\n ? locking\n ? \"Change Retention rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Retention Rules\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"change Retention Rules for this object\",\n ),\n },\n {\n action: () => {\n setTagModalOpen(true);\n },\n label: \"Tags\",\n disabled:\n !!actualInfo.is_delete_marker || selectedVersion !== \"\" || !canSetTags,\n icon: ,\n tooltip: canSetTags\n ? \"Change Tags for this File\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"set Tags on this object\",\n ),\n },\n {\n action: () => {\n setInspectModalOpen(true);\n },\n label: \"Inspect\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n selectedVersion !== \"\" ||\n !canInspect,\n icon: ,\n tooltip: canInspect\n ? \"Inspect this file\"\n : permissionTooltipHelper(\n [IAM_SCOPES.ADMIN_INSPECT_DATA],\n \"inspect this file\",\n ),\n },\n {\n action: () => {\n dispatch(\n setVersionsModeEnabled({\n status: !versionsMode,\n objectName: objectName,\n }),\n );\n },\n label: versionsMode ? \"Hide Object Versions\" : \"Display Object Versions\",\n icon: ,\n disabled:\n !distributedSetup ||\n !(actualInfo.version_id && actualInfo.version_id !== \"null\") ||\n !canChangeVersioning,\n tooltip: canChangeVersioning\n ? actualInfo.version_id && actualInfo.version_id !== \"null\"\n ? \"Display Versions for this file\"\n : \"\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"display all versions of this object\",\n ),\n },\n ];\n\n const calculateLastModifyTime = (lastModified: string) => {\n const currentTime = new Date();\n const modifiedTime = new Date(lastModified);\n\n const difTime = currentTime.getTime() - modifiedTime.getTime();\n\n const formatTime = niceDaysInt(difTime, \"ms\");\n\n return formatTime.trim() !== \"\" ? `${formatTime} ago` : \"Just now\";\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {retentionModalOpen && actualInfo && (\n \n )}\n {deleteOpen && (\n \n )}\n {legalholdOpen && actualInfo && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {tagModalOpen && actualInfo && (\n \n )}\n {inspectModalOpen && actualInfo && (\n \n )}\n {longFileOpen && actualInfo && (\n \n )}\n\n {loadingObjectInfo ? (\n {loaderForContainer}\n ) : (\n \n \n {displayFileIconName(objectName || \"\", true)}\n {objectName}\n \n }\n items={multiActionButtons}\n />\n \n \n \n }\n iconLocation={\"start\"}\n fullWidth\n variant={\"secondary\"}\n onClick={() => {\n setDeleteOpen(true);\n }}\n disabled={\n selectedVersion === \"\" && actualInfo.is_delete_marker\n }\n sx={{\n width: \"calc(100% - 44px)\",\n margin: \"8px 0\",\n }}\n label={`Delete${selectedVersion !== \"\" ? \" version\" : \"\"}`}\n />\n \n \n \n } label={\"Object Info\"} />\n \n Name:\n
\n
{objectName}
\n
\n {selectedVersion !== \"\" && (\n \n Version ID:\n
\n {selectedVersion}\n
\n )}\n \n Size:\n
\n {niceBytes(`${actualInfo.size || \"0\"}`)}\n
\n {actualInfo.version_id &&\n actualInfo.version_id !== \"null\" &&\n selectedVersion === \"\" && (\n \n Versions:\n
\n {versions.length} version{versions.length !== 1 ? \"s\" : \"\"},{\" \"}\n {niceBytesInt(totalVersionsSize)}\n
\n )}\n {selectedVersion === \"\" && (\n \n Last Modified:\n
\n {calculateLastModifyTime(actualInfo.last_modified || \"\")}\n
\n )}\n \n ETAG:\n
\n {actualInfo.etag || \"N/A\"}\n
\n \n Tags:\n
\n {tagKeys.length === 0\n ? \"N/A\"\n : tagKeys.map((tagKey, index) => {\n return (\n \n {tagKey}:{get(actualInfo, `tags.${tagKey}`, \"\")}\n {index < tagKeys.length - 1 ? \", \" : \"\"}\n \n );\n })}\n
\n \n \n \n Legal Hold:\n
\n {actualInfo.legal_hold_status ? \"On\" : \"Off\"}\n
\n \n
\n \n \n \n Retention Policy:\n
\n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" ? (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n ) : (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n )}\n \n
\n \n
\n {!actualInfo.is_delete_marker && (\n \n } />\n \n {actualInfo && metaData ? (\n \n ) : null}\n \n \n )}\n \n )}\n
\n );\n};\n\nexport default ObjectDetailPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Box, RecoverIcon } from \"mds\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { restoreLocalObjectList } from \"../../../../ObjectBrowser/objectBrowserSlice\";\n\ninterface IRestoreFileVersion {\n restoreOpen: boolean;\n bucketName: string;\n versionToRestore: BucketObject;\n objectPath: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst RestoreFileVersion = ({\n versionToRestore,\n bucketName,\n objectPath,\n restoreOpen,\n onCloseAndUpdate,\n}: IRestoreFileVersion) => {\n const dispatch = useAppDispatch();\n const [restoreLoading, setRestoreLoading] = useState(false);\n\n const restoreVersion = () => {\n setRestoreLoading(true);\n\n api.buckets\n .putObjectRestore(bucketName, {\n prefix: encodeURLString(objectPath),\n version_id: versionToRestore.version_id || \"\",\n })\n .then(() => {\n setRestoreLoading(false);\n onCloseAndUpdate(true);\n dispatch(\n restoreLocalObjectList({\n prefix: objectPath,\n objectInfo: versionToRestore,\n }),\n );\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setRestoreLoading(false);\n });\n };\n\n return (\n }\n onConfirm={restoreVersion}\n confirmButtonProps={{\n variant: \"secondary\",\n disabled: restoreLoading,\n }}\n onClose={() => {\n onCloseAndUpdate(false);\n }}\n confirmationContent={\n \n Are you sure you want to restore
\n {objectPath}
with Version ID:\n
\n {versionToRestore.version_id}?\n
\n }\n />\n );\n};\n\nexport default RestoreFileVersion;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ninterface ISpecificVersionPillProps {\n type: \"null\" | \"current\" | \"deleted\";\n}\n\nconst SpecificVersionPill = ({ type }: ISpecificVersionPillProps) => {\n let bgColor = \"#000\";\n let message = \"\";\n\n switch (type) {\n case \"null\":\n bgColor = \"#07193E\";\n message = \"NULL VERSION\";\n break;\n case \"deleted\":\n bgColor = \"#868686\";\n message = \"DELETED\";\n break;\n default:\n bgColor = \"#174551\";\n message = \"CURRENT VERSION\";\n }\n\n return (\n \n {message}\n \n );\n};\n\nexport default SpecificVersionPill;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { DateTime } from \"luxon\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { displayFileIconName } from \"../ListObjects/utils\";\nimport {\n DownloadIcon,\n PreviewIcon,\n RecoverIcon,\n ShareIcon,\n IconButton,\n Tooltip,\n Grid,\n Checkbox,\n} from \"mds\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport SpecificVersionPill from \"./SpecificVersionPill\";\nimport { BucketObject } from \"api/consoleApi\";\n\ninterface IFileVersionItem {\n fileName: string;\n versionInfo: BucketObject;\n index: number;\n isSelected?: boolean;\n checkable: boolean;\n isChecked: boolean;\n onCheck: (versionID: string) => void;\n onShare: (versionInfo: BucketObject) => void;\n onDownload: (versionInfo: BucketObject) => void;\n onRestore: (versionInfo: BucketObject) => void;\n onPreview: (versionInfo: BucketObject) => void;\n globalClick: (versionInfo: BucketObject) => void;\n key: any;\n style: any;\n}\n\nconst FileVersionStyled = styled.div(({ theme }) => {\n return {\n \"&:before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n height: \"calc(100% + 2px)\",\n backgroundColor: get(theme, \"borderColor\", \"#F8F8F8\"),\n left: \"24px\",\n },\n \"& .mainFileVersionItem\": {\n borderBottom: `${get(theme, \"borderColor\", \"#F8F8F8\")} 1px solid`,\n padding: \"1rem 0\",\n margin: \"0 0.5rem 0 2.5rem\",\n cursor: \"pointer\",\n \"&.deleted\": {\n color: \"#868686\",\n },\n },\n \"& .intermediateLayer\": {\n margin: \"0 1.5rem 0 1.5rem\",\n \"&:hover, &.selected\": {\n backgroundColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n \"& > div\": {\n borderBottomColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n },\n },\n },\n \"& .versionContainer\": {\n fontSize: 16,\n fontWeight: \"bold\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg.min-icon\": {\n width: 18,\n height: 18,\n minWidth: 18,\n minHeight: 18,\n marginRight: 10,\n },\n },\n \"& .buttonContainer\": {\n textAlign: \"right\",\n \"& button\": {\n marginLeft: \"1.5rem\",\n },\n },\n \"& .versionID\": {\n fontSize: \"12px\",\n margin: \"2px 0\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n },\n \"& .versionData\": {\n marginRight: \"10px\",\n fontSize: 12,\n color: \"#868686\",\n },\n \"@media (max-width: 600px)\": {\n \"& .buttonContainer\": {\n \"& button\": {\n marginLeft: \"5px\",\n },\n },\n },\n \"@media (max-width: 799px)\": {\n \"&:before\": {\n display: \"none\",\n },\n \"& .mainFileVersionItem\": {\n padding: \"5px 0px\",\n margin: 0,\n },\n \"& .intermediateLayer\": {\n margin: 0,\n \"&:hover, &.selected\": {\n backgroundColor: \"transparent\",\n \"& > div\": {\n borderBottomColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n },\n },\n },\n \"& .versionContainer\": {\n fontSize: 14,\n \"& svg.min-icon\": {\n display: \"none\",\n },\n },\n \"& .versionData\": {\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n \"& .collapsableInfo\": {\n display: \"flex\",\n flexDirection: \"column\",\n },\n \"& .versionItem\": {\n display: \"none\",\n },\n },\n };\n});\n\nconst FileVersionItem = ({\n fileName,\n versionInfo,\n isSelected,\n checkable,\n isChecked,\n onCheck,\n onShare,\n onDownload,\n onRestore,\n onPreview,\n globalClick,\n index,\n key,\n style,\n}: IFileVersionItem) => {\n const disableButtons = versionInfo.is_delete_marker;\n\n const versionItemButtons = [\n {\n icon: ,\n action: onPreview,\n tooltip: \"Preview\",\n },\n {\n icon: ,\n action: onDownload,\n tooltip: \"Download this version\",\n },\n {\n icon: ,\n action: onShare,\n tooltip: \"Share this version\",\n },\n {\n icon: ,\n action: onRestore,\n tooltip: \"Restore this version\",\n },\n ];\n\n let pill: \"deleted\" | \"current\" | \"null\" | null = null;\n\n if (versionInfo.is_delete_marker) {\n pill = \"deleted\";\n } else if (versionInfo.is_latest) {\n pill = \"current\";\n } else if (versionInfo.version_id === \"null\") {\n pill = \"null\";\n }\n\n let lastModified = DateTime.now();\n\n if (versionInfo.last_modified) {\n lastModified = DateTime.fromISO(\n versionInfo.last_modified,\n ) as DateTime;\n }\n\n return (\n \n {\n globalClick(versionInfo);\n }}\n key={key}\n style={style}\n >\n \n \n \n \n \n {checkable && (\n {\n e.stopPropagation();\n onCheck(versionInfo.version_id || \"\");\n }}\n value={versionInfo.version_id || \"\"}\n disabled={versionInfo.is_delete_marker}\n sx={{\n width: \"initial\",\n }}\n />\n )}\n {displayFileIconName(fileName, true)} v{index.toString()}\n \n {pill && }\n \n \n \n {versionItemButtons.map((button, index) => {\n return (\n \n {\n e.stopPropagation();\n if (!disableButtons) {\n button.action(versionInfo);\n } else {\n e.preventDefault();\n }\n }}\n sx={{\n backgroundColor: \"#F8F8F8\",\n borderRadius: \"100%\",\n width: \"28px\",\n height: \"28px\",\n padding: \"5px\",\n \"& .min-icon\": {\n width: \"14px\",\n height: \"14px\",\n },\n }}\n >\n {button.icon}\n \n \n );\n })}\n \n \n \n \n {versionInfo.version_id !== \"null\" ? versionInfo.version_id : \"-\"}\n \n \n \n Last modified:{\" \"}\n {lastModified.toFormat(\"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\")}\n \n \n Size: {niceBytes(`${versionInfo.size || \"0\"}`)}\n \n \n \n \n \n \n );\n};\n\nexport default FileVersionItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\n\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport { ConfirmDeleteIcon, Switch, Grid, InputBox } from \"mds\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteNonCurrentProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteNonCurrentVersions = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n}: IDeleteNonCurrentProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [typeConfirm, setTypeConfirm] = useState(\"\");\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n useEffect(() => {\n if (deleteLoading) {\n api.buckets\n .deleteObject(selectedBucket, {\n prefix: selectedObject,\n non_current_versions: true,\n bypass: bypassGovernance,\n })\n .then(() => {\n closeDeleteModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setDeleteLoading(false);\n });\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n dispatch,\n selectedObject,\n selectedBucket,\n bypassGovernance,\n ]);\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={() => closeDeleteModalAndRefresh(false)}\n confirmButtonProps={{\n disabled: typeConfirm !== \"YES, PROCEED\" || deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete all the non-current versions for:{\" \"}\n {decodeURLString(selectedObject)}?
\n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n
\n To continue please type YES, PROCEED in the box.\n
\n
\n \n ) => {\n setTypeConfirm(event.target.value);\n }}\n label=\"\"\n value={typeConfirm}\n />\n \n
\n }\n />\n );\n};\n\nexport default DeleteNonCurrentVersions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteSelectedVersionsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedVersions: string[];\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedVersions,\n selectedObject,\n}: IDeleteSelectedVersionsProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n const onClose = () => closeDeleteModalAndRefresh(false);\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n useEffect(() => {\n if (deleteLoading) {\n const selectedObjectsRequest = selectedVersions.map((versionID) => {\n return {\n path: selectedObject,\n versionID: versionID,\n recursive: false,\n };\n });\n\n if (selectedObjectsRequest.length > 0) {\n api.buckets\n .deleteMultipleObjects(selectedBucket, selectedObjectsRequest, {\n all_versions: false,\n bypass: bypassGovernance,\n })\n .then(() => {\n setDeleteLoading(false);\n closeDeleteModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setDeleteLoading(false);\n });\n }\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n selectedBucket,\n selectedObject,\n selectedVersions,\n bypassGovernance,\n dispatch,\n ]);\n\n if (!selectedVersions) {\n return null;\n }\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedVersions.length}{\" \"}\n versions for {selectedObject}?\n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport {\n breakPoints,\n Button,\n DeleteIcon,\n DeleteNonCurrentIcon,\n Grid,\n ProgressBar,\n ScreenTitle,\n Select,\n SelectMultipleIcon,\n VersionsIcon,\n} from \"mds\";\nimport ShareFile from \"./ShareFile\";\n\nimport { decodeURLString, niceBytesInt } from \"../../../../../../common/utils\";\nimport RestoreFileVersion from \"./RestoreFileVersion\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport FileVersionItem from \"./FileVersionItem\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport DeleteNonCurrent from \"../ListObjects/DeleteNonCurrent\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport DeleteSelectedVersions from \"./DeleteSelectedVersions\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport {\n setLoadingObjectInfo,\n setLoadingVersions,\n setSelectedVersion,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { List, ListRowProps } from \"react-virtualized\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IVersionsNavigatorProps {\n internalPaths: string;\n bucketName: string;\n}\n\nconst emptyFile: BucketObject = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: 0,\n tags: {},\n version_id: undefined,\n};\n\nconst VersionsNavigator = ({\n internalPaths,\n bucketName,\n}: IVersionsNavigatorProps) => {\n const dispatch = useAppDispatch();\n\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions,\n );\n const loadingVersions = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersions,\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion,\n );\n\n const distributedSetup = useSelector(selDistSet);\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [restoreVersionOpen, setRestoreVersionOpen] = useState(false);\n const [restoreVersion, setRestoreVersion] = useState(\n null,\n );\n const [sortValue, setSortValue] = useState(\"date\");\n const [previewOpen, setPreviewOpen] = useState(false);\n const [deleteNonCurrentOpen, setDeleteNonCurrentOpen] =\n useState(false);\n const [selectEnabled, setSelectEnabled] = useState(false);\n const [selectedItems, setSelectedItems] = useState([]);\n const [delSelectedVOpen, setDelSelectedVOpen] = useState(false);\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo && actualInfo.name) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (!loadingVersions && !actualInfo) {\n dispatch(setLoadingVersions(true));\n }\n }, [loadingVersions, actualInfo, dispatch]);\n\n useEffect(() => {\n if (loadingVersions && internalPaths !== \"\") {\n api.buckets\n .listObjects(bucketName, {\n prefix: internalPaths,\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result = get(res.data, \"objects\", []);\n\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n // Filter the results prefixes as API can return more files than expected.\n const filteredPrefixes = result.filter(\n (item: BucketObject) => item.name === decodedInternalPaths,\n );\n\n if (distributedSetup) {\n setActualInfo(\n filteredPrefixes.find((el: BucketObject) => el.is_latest) ||\n emptyFile,\n );\n setVersions(filteredPrefixes);\n } else {\n setActualInfo(filteredPrefixes[0]);\n setVersions([]);\n }\n\n dispatch(setLoadingVersions(false));\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n dispatch(setLoadingVersions(false));\n });\n }\n }, [loadingVersions, bucketName, internalPaths, dispatch, distributedSetup]);\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n setPreviewOpen(false);\n };\n\n const onShareItem = (item: BucketObject) => {\n setObjectToShare(item);\n shareObject();\n };\n\n const onPreviewItem = (item: BucketObject) => {\n setObjectToShare(item);\n setPreviewOpen(true);\n };\n\n const onRestoreItem = (item: BucketObject) => {\n setRestoreVersion(item);\n setRestoreVersionOpen(true);\n };\n\n const onDownloadItem = (item: BucketObject) => {\n downloadObject(dispatch, bucketName, internalPaths, item);\n };\n\n const onGlobalClick = (item: BucketObject) => {\n dispatch(setSelectedVersion(item.version_id || \"\"));\n };\n\n const filteredRecords = versions.filter((version) => {\n if (version.version_id) {\n return version.version_id.includes(searchVersions);\n }\n return false;\n });\n\n const closeRestoreModal = (reloadObjectData: boolean) => {\n setRestoreVersionOpen(false);\n setRestoreVersion(null);\n\n if (reloadObjectData) {\n dispatch(setLoadingVersions(true));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeDeleteNonCurrent = (reloadAfterDelete: boolean) => {\n setDeleteNonCurrentOpen(false);\n\n if (reloadAfterDelete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeSelectedVersions = (reloadOnComplete: boolean) => {\n setDelSelectedVOpen(false);\n\n if (reloadOnComplete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n setSelectedItems([]);\n }\n };\n\n const totalSpace = versions.reduce((acc: number, currValue: BucketObject) => {\n if (currValue.size) {\n return acc + currValue.size;\n }\n return acc;\n }, 0);\n\n filteredRecords.sort((a, b) => {\n switch (sortValue) {\n case \"size\":\n if (a.size && b.size) {\n if (a.size < b.size) {\n return -1;\n }\n if (a.size > b.size) {\n return 1;\n }\n return 0;\n }\n return 0;\n default:\n const dateA = new Date(a.last_modified || \"\").getTime();\n const dateB = new Date(b.last_modified || \"\").getTime();\n\n if (dateA < dateB) {\n return 1;\n }\n if (dateA > dateB) {\n return -1;\n }\n return 0;\n }\n });\n\n const onCheckVersion = (selectedVersion: string) => {\n if (selectedItems.includes(selectedVersion)) {\n const filteredItems = selectedItems.filter(\n (element) => element !== selectedVersion,\n );\n\n setSelectedItems(filteredItems);\n\n return;\n }\n\n const cloneState = [...selectedItems];\n cloneState.push(selectedVersion);\n\n setSelectedItems(cloneState);\n };\n\n const rowRenderer = ({\n key, // Unique key within array of rows\n index, // Index of row within collection\n isScrolling, // The List is currently being scrolled\n isVisible, // This row is visible within the List (eg it is not an overscanned row)\n style, // Style object to be applied to row (to position it)\n }: ListRowProps) => {\n const versOrd = versions.length - index;\n return (\n \n );\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {restoreVersionOpen && actualInfo && restoreVersion && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {deleteNonCurrentOpen && (\n \n )}\n {delSelectedVOpen && (\n \n )}\n \n {!actualInfo && (\n \n \n \n )}\n\n {actualInfo && (\n \n \n \n \n \n \n \n \n }\n title={`${\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name\n } Versions`}\n subTitle={\n \n \n \n {versions.length} Version\n {versions.length === 1 ? \"\" : \"s\"}   \n \n \n \n {niceBytesInt(totalSpace)}\n \n \n }\n actions={\n \n \n {\n setSelectEnabled(!selectEnabled);\n }}\n icon={}\n variant={selectEnabled ? \"callAction\" : \"regular\"}\n style={{ marginRight: 8 }}\n />\n \n {selectEnabled && (\n \n {\n setDelSelectedVOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 8 }}\n disabled={selectedItems.length === 0}\n />\n \n )}\n \n {\n setDeleteNonCurrentOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 15 }}\n disabled={versions.length <= 1}\n />\n \n {\n setSortValue(newValue);\n }}\n noLabelMinWidth\n />\n \n }\n bottomBorder={false}\n />\n \n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" && (\n // @ts-ignore\n \n )}\n \n \n )}\n \n \n );\n};\n\nexport default VersionsNavigator;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { DateTime } from \"luxon\";\nimport { BucketObjectItem } from \"./types\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport { displayFileIconName } from \"./utils\";\n\n// Functions\n\nexport const displayParsedDate = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\")) {\n return \"\";\n }\n\n const currTime = DateTime.now();\n const objectTime = DateTime.fromISO(object.last_modified);\n\n const isToday =\n currTime.hasSame(objectTime, \"day\") &&\n currTime.hasSame(objectTime, \"month\") &&\n currTime.hasSame(objectTime, \"year\");\n\n if (isToday) {\n return `Today, ${objectTime.toFormat(\"HH:mm\")}`;\n }\n\n return objectTime.toFormat(\"ccc, LLL dd yyyy HH:mm (ZZZZ)\");\n};\n\nexport const displayNiceBytes = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\") || !object.size) {\n return \"-\";\n }\n return niceBytes(String(object.size));\n};\n\nexport const displayDeleteFlag = (state: boolean) => {\n return state ? \"Yes\" : \"No\";\n};\n\n// Table Props\n\nexport const listModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Last Modified\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n];\n\nexport const rewindModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Object Date\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n {\n label: \"Deleted\",\n elementKey: \"delete_flag\",\n renderFunction: displayDeleteFlag,\n width: 60,\n },\n];\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { listModeColumns, rewindModeColumns } from \"./ListObjectsHelpers\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n setLoadingVersions,\n setObjectDetailsView,\n setReloadObjectsList,\n setSelectedObjects,\n setSelectedObjectView,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport get from \"lodash/get\";\nimport { sortListObjects } from \"../utils\";\nimport { BucketObjectItem } from \"./types\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { DataTable, ItemActions } from \"mds\";\nimport { BucketObject } from \"api/consoleApi\";\n\nconst ListObjectsTable = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [sortDirection, setSortDirection] = useState<\n \"ASC\" | \"DESC\" | undefined\n >(\"ASC\");\n const [currentSortField, setCurrentSortField] = useState(\"name\");\n\n const bucketName = params.bucketName || \"\";\n\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen,\n );\n\n const requestInProgress = useSelector(\n (state: AppState) => state.objectBrowser.requestInProgress,\n );\n\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects,\n );\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects,\n );\n const connectionError = useSelector(\n (state: AppState) => state.objectBrowser.connectionError,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const displayListObjects = hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]);\n\n const filteredRecords = records.filter((b: BucketObjectItem) => {\n if (searchObjects === \"\") {\n return true;\n } else {\n const objectName = b.name.toLowerCase();\n if (objectName.indexOf(searchObjects.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n });\n\n const plSelect = filteredRecords;\n const sortASC = plSelect.sort(sortListObjects(currentSortField));\n\n let payload: BucketObjectItem[] = [];\n\n if (sortDirection === \"ASC\") {\n payload = sortASC;\n } else {\n payload = sortASC.reverse();\n }\n\n const openPath = (object: BucketObject) => {\n const idElement = object.name || \"\";\n const newPath = `/browser/${bucketName}${\n idElement ? `/${encodeURLString(idElement)}` : ``\n }`;\n\n // for anonymous start download\n if (anonymousMode && !object.name?.endsWith(\"/\")) {\n downloadObject(\n dispatch,\n bucketName,\n `${encodeURLString(idElement)}`,\n object,\n );\n return;\n }\n dispatch(setSelectedObjects([]));\n\n navigate(newPath);\n\n if (!anonymousMode) {\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n }\n dispatch(\n setSelectedObjectView(\n `${idElement ? `${encodeURLString(idElement)}` : ``}`,\n ),\n );\n };\n const tableActions: ItemActions[] = [\n {\n type: \"view\",\n tooltip: \"View\",\n onClick: openPath,\n sendOnlyId: false,\n },\n ];\n\n const sortChange = (sortData: any) => {\n const newSortDirection = get(sortData, \"sortDirection\", \"DESC\");\n setCurrentSortField(sortData.sortBy);\n setSortDirection(newSortDirection);\n dispatch(setReloadObjectsList(true));\n };\n\n const selectAllItems = () => {\n dispatch(setSelectedObjectView(null));\n\n if (selectedObjects.length === payload.length) {\n dispatch(setSelectedObjects([]));\n return;\n }\n\n const elements = payload.map((item) => item.name);\n dispatch(setSelectedObjects(elements));\n };\n\n const selectListObjects = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedObjects]; // We clone the selectedBuckets array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedBucketsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n dispatch(setSelectedObjects(elements));\n dispatch(setSelectedObjectView(null));\n\n return elements;\n };\n\n let errorMessage =\n !displayListObjects && !anonymousMode\n ? permissionTooltipHelper(\n [IAM_SCOPES.S3_LIST_BUCKET, IAM_SCOPES.S3_ALL_LIST_BUCKET],\n \"view Objects in this bucket\",\n )\n : `This location is empty${\n !rewindEnabled ? \", please try uploading a new file\" : \"\"\n }`;\n\n if (connectionError) {\n errorMessage =\n \"Objects List unavailable. Please review your WebSockets configuration and try again\";\n }\n\n let customPaperHeight = \"calc(100vh - 290px)\";\n\n if (obOnly) {\n customPaperHeight = \"calc(100vh - 315px)\";\n }\n\n return (\n {\n if (payload[index]?.delete_flag) {\n return \"deleted\";\n }\n\n return \"\";\n }}\n sx={{\n minHeight: detailsOpen ? \"100%\" : \"initial\",\n }}\n noBackground\n />\n );\n};\nexport default ListObjectsTable;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { setSearchObjects } from \"./objectBrowserSlice\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\n\nconst FilterObjectsSB = () => {\n const dispatch = useAppDispatch();\n\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects,\n );\n return (\n {\n dispatch(setSearchObjects(value));\n }}\n value={searchObjects}\n />\n );\n};\nexport default FilterObjectsSB;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport {\n AccessRuleIcon,\n ActionsList,\n Badge,\n Box,\n BucketsIcon,\n Button,\n Checkbox,\n DeleteIcon,\n DownloadIcon,\n Grid,\n HistoryIcon,\n PageLayout,\n PreviewIcon,\n RefreshIcon,\n ScreenTitle,\n ShareIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { BucketQuota } from \"api/consoleApi\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport { useDropzone } from \"react-dropzone\";\nimport { DateTime } from \"luxon\";\nimport {\n decodeURLString,\n encodeURLString,\n niceBytesInt,\n} from \"../../../../../../common/utils\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../../../systemSlice\";\nimport { isVersionedMode } from \"../../../../../../utils/validationFunctions\";\nimport {\n extractFileExtn,\n getPolicyAllowedFileExtensions,\n getSessionGrantsWildCard,\n} from \"../../UploadPermissionUtils\";\nimport {\n makeid,\n removeTrace,\n storeCallForObjectWithID,\n storeFormDataWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n openList,\n resetMessages,\n resetRewind,\n setAnonymousAccessOpen,\n setDownloadRenameModal,\n setLoadingVersions,\n setNewObject,\n setObjectDetailsView,\n setPreviewOpen,\n setReloadObjectsList,\n setRetentionConfig,\n setSelectedObjects,\n setSelectedObjectView,\n setSelectedPreview,\n setShareFileModalOpen,\n setShowDeletedObjects,\n setVersionsModeEnabled,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n setBucketInfo,\n} from \"../../../BucketDetails/bucketDetailsSlice\";\nimport {\n downloadSelected,\n openAnonymousAccess,\n openPreview,\n openShare,\n} from \"../../../../ObjectBrowser/objectBrowserThunks\";\nimport withSuspense from \"../../../../Common/Components/withSuspense\";\nimport UploadFilesButton from \"../../UploadFilesButton\";\nimport DetailsListPanel from \"./DetailsListPanel\";\nimport ObjectDetailPanel from \"./ObjectDetailPanel\";\nimport VersionsNavigator from \"../ObjectDetails/VersionsNavigator\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport ListObjectsTable from \"./ListObjectsTable\";\nimport FilterObjectsSB from \"../../../../ObjectBrowser/FilterObjectsSB\";\nimport AddAccessRule from \"../../../BucketDetails/AddAccessRule\";\n\nconst DeleteMultipleObjects = withSuspense(\n React.lazy(() => import(\"./DeleteMultipleObjects\")),\n);\nconst ShareFile = withSuspense(\n React.lazy(() => import(\"../ObjectDetails/ShareFile\")),\n);\nconst RewindEnable = withSuspense(React.lazy(() => import(\"./RewindEnable\")));\nconst PreviewFileModal = withSuspense(\n React.lazy(() => import(\"../Preview/PreviewFileModal\")),\n);\n\nconst baseDnDStyle = {\n borderWidth: 2,\n borderRadius: 2,\n borderColor: \"transparent\",\n outline: \"none\",\n};\n\nconst activeDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"transparent\",\n borderColor: \"#2196f3\",\n};\n\nconst acceptDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"transparent\",\n borderColor: \"#00e676\",\n};\n\nconst ListObjects = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n const location = useLocation();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const bucketToRewind = useSelector(\n (state: AppState) => state.objectBrowser.rewind.bucketToRewind,\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted,\n );\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen,\n );\n const selectedInternalPaths = useSelector(\n (state: AppState) => state.objectBrowser.selectedInternalPaths,\n );\n const requestInProgress = useSelector(\n (state: AppState) => state.objectBrowser.requestInProgress,\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath,\n );\n const versioningConfig = useSelector(\n (state: AppState) => state.objectBrowser.versionInfo,\n );\n const lockingEnabled = useSelector(\n (state: AppState) => state.objectBrowser.lockingEnabled,\n );\n const downloadRenameModal = useSelector(\n (state: AppState) => state.objectBrowser.downloadRenameModal,\n );\n const selectedPreview = useSelector(\n (state: AppState) => state.objectBrowser.selectedPreview,\n );\n const shareFileModalOpen = useSelector(\n (state: AppState) => state.objectBrowser.shareFileModalOpen,\n );\n const previewOpen = useSelector(\n (state: AppState) => state.objectBrowser.previewOpen,\n );\n const selectedBucket = useSelector(\n (state: AppState) => state.objectBrowser.selectedBucket,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n const anonymousAccessOpen = useSelector(\n (state: AppState) => state.objectBrowser.anonymousAccessOpen,\n );\n\n const records = useSelector(\n (state: AppState) => state.objectBrowser?.records || [],\n );\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [rewindSelect, setRewindSelect] = useState(false);\n const [iniLoad, setIniLoad] = useState(false);\n const [canShareFile, setCanShareFile] = useState(false);\n const [canPreviewFile, setCanPreviewFile] = useState(false);\n const [quota, setQuota] = useState(null);\n const [metaData, setMetaData] = useState(null);\n const [isMetaDataLoaded, setIsMetaDataLoaded] = useState(false);\n\n const isVersioningApplied = isVersionedMode(versioningConfig.status);\n\n const bucketName = params.bucketName || \"\";\n const pathSegment = location.pathname.split(`/browser/${bucketName}/`);\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n const pageTitle = decodeURLString(internalPaths);\n const currentPath = pageTitle.split(\"/\").filter((i: string) => i !== \"\");\n\n let uploadPath = [bucketName];\n if (currentPath.length > 0) {\n uploadPath = uploadPath.concat(currentPath);\n }\n\n const fileUpload = useRef(null);\n const folderUpload = useRef(null);\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const pathAsResourceInPolicy = uploadPath.join(\"/\");\n const allowedFileExtensions = getPolicyAllowedFileExtensions(\n sessionGrants,\n pathAsResourceInPolicy,\n putObjectPermScopes,\n );\n\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n pathAsResourceInPolicy,\n putObjectPermScopes,\n );\n\n const canDownload = hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n );\n const canRewind = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n ]);\n const canDelete = hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n [IAM_SCOPES.S3_DELETE_OBJECT],\n );\n const canUpload =\n hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) || anonymousMode;\n\n const canSetAnonymousAccess = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects,\n );\n\n const checkForDelMarker = (): boolean => {\n let isObjDelMarker = false;\n if (selectedObjects.length === 1) {\n let matchingRec = records.find((obj) => {\n return obj.name === `${selectedObjects[0]}` && obj.delete_flag;\n });\n\n isObjDelMarker = !!matchingRec;\n }\n return isObjDelMarker;\n };\n\n const isSelObjectDelMarker = checkForDelMarker();\n\n const fetchMetadata = useCallback(() => {\n const objectName = selectedObjects[0];\n const encodedPath = encodeURLString(objectName);\n\n if (!isMetaDataLoaded && encodedPath) {\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: encodedPath,\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n setIsMetaDataLoaded(true);\n setMetaData(metadata);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Metadata Status: \",\n err,\n err?.detailedError,\n );\n setIsMetaDataLoaded(true);\n });\n }\n }, [bucketName, selectedObjects, isMetaDataLoaded]);\n\n useEffect(() => {\n if (bucketName && !isSelObjectDelMarker) {\n fetchMetadata();\n }\n }, [bucketName, selectedObjects, fetchMetadata, isSelObjectDelMarker]);\n\n useEffect(() => {\n if (rewindEnabled) {\n if (bucketToRewind !== bucketName) {\n dispatch(resetRewind());\n return;\n }\n }\n }, [rewindEnabled, bucketToRewind, bucketName, dispatch]);\n\n useEffect(() => {\n if (folderUpload.current !== null) {\n folderUpload.current.setAttribute(\"directory\", \"\");\n folderUpload.current.setAttribute(\"webkitdirectory\", \"\");\n }\n }, [folderUpload]);\n\n useEffect(() => {\n if (selectedObjects.length === 1) {\n const objectName = selectedObjects[0];\n const isPrefix = objectName.endsWith(\"/\");\n\n let objectType: AllowedPreviews = previewObjectType(metaData, objectName);\n\n if (objectType !== \"none\" && canDownload) {\n setCanPreviewFile(true);\n } else {\n setCanPreviewFile(false);\n }\n\n if (canDownload && !isPrefix) {\n setCanShareFile(true);\n } else {\n setCanShareFile(false);\n }\n } else {\n setCanShareFile(false);\n setCanPreviewFile(false);\n }\n }, [selectedObjects, canDownload, metaData]);\n\n useEffect(() => {\n if (!quota && !anonymousMode) {\n api.buckets\n .getBucketQuota(bucketName)\n .then((res) => {\n let quotaVals = null;\n\n if (res.data.quota) {\n quotaVals = res.data;\n }\n\n setQuota(quotaVals);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Quota Status: \",\n err.error.detailedMessage,\n );\n setQuota(null);\n });\n }\n }, [quota, bucketName, anonymousMode]);\n\n useEffect(() => {\n if (selectedObjects.length > 0) {\n dispatch(setObjectDetailsView(true));\n return;\n }\n\n if (\n selectedObjects.length === 0 &&\n selectedInternalPaths === null &&\n !requestInProgress\n ) {\n dispatch(setObjectDetailsView(false));\n }\n }, [selectedObjects, selectedInternalPaths, dispatch, requestInProgress]);\n\n useEffect(() => {\n if (!iniLoad) {\n dispatch(setBucketDetailsLoad(true));\n setIniLoad(true);\n }\n }, [iniLoad, dispatch, setIniLoad]);\n\n // bucket info\n useEffect(() => {\n if ((requestInProgress || loadingBucket) && !anonymousMode) {\n api.buckets\n .bucketInfo(bucketName)\n .then((res) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setBucketInfo(res.data));\n })\n .catch((err) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }\n }, [bucketName, loadingBucket, dispatch, anonymousMode, requestInProgress]);\n\n // Load retention Config\n\n useEffect(() => {\n if (selectedBucket !== \"\") {\n api.buckets\n .getBucketRetentionConfig(selectedBucket)\n .then((res) => {\n dispatch(setRetentionConfig(res.data));\n })\n .catch(() => {\n dispatch(setRetentionConfig(null));\n });\n }\n }, [selectedBucket, dispatch]);\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n\n if (refresh) {\n dispatch(setSnackBarMessage(`Objects deleted successfully.`));\n dispatch(setSelectedObjects([]));\n dispatch(setReloadObjectsList(true));\n }\n };\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n var newFiles: File[] = [];\n\n for (let i = 0; i < e.target.files.length; i++) {\n newFiles.push(e.target.files[i]);\n }\n uploadObject(newFiles, \"\");\n\n e.target.value = \"\";\n };\n\n const uploadObject = useCallback(\n (files: File[], folderPath: string): void => {\n let pathPrefix = \"\";\n if (simplePath) {\n pathPrefix = simplePath.endsWith(\"/\") ? simplePath : simplePath + \"/\";\n }\n\n const upload = (\n files: File[],\n bucketName: string,\n path: string,\n folderPath: string,\n ) => {\n let uploadPromise = (file: File) => {\n return new Promise((resolve, reject) => {\n let uploadUrl = `api/v1/buckets/${bucketName}/objects/upload`;\n const fileName = file.name;\n\n const blobFile = new Blob([file], { type: file.type });\n\n let encodedPath = \"\";\n\n const filePath = get(file, \"path\", \"\");\n const fileWebkitRelativePath = get(file, \"webkitRelativePath\", \"\");\n\n let relativeFolderPath = folderPath;\n const ID = makeid(8);\n\n // File was uploaded via drag & drop\n if (filePath !== \"\") {\n relativeFolderPath = filePath;\n } else if (fileWebkitRelativePath !== \"\") {\n // File was uploaded using upload button\n relativeFolderPath = fileWebkitRelativePath;\n }\n\n let prefixPath = \"\";\n\n if (path !== \"\" || relativeFolderPath !== \"\") {\n const finalFolderPath = relativeFolderPath\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\");\n\n const pathClean = path.endsWith(\"/\") ? path.slice(0, -1) : path;\n\n prefixPath = `${pathClean}${\n !pathClean.endsWith(\"/\") &&\n finalFolderPath !== \"\" &&\n !finalFolderPath.startsWith(\"/\")\n ? \"/\"\n : \"\"\n }${finalFolderPath}${\n !finalFolderPath.endsWith(\"/\") ||\n (finalFolderPath.trim() === \"\" && !path.endsWith(\"/\"))\n ? \"/\"\n : \"\"\n }`;\n }\n\n if (prefixPath !== \"\") {\n uploadUrl = `${uploadUrl}?prefix=${encodeURLString(\n prefixPath + fileName,\n )}`;\n } else {\n uploadUrl = `${uploadUrl}?prefix=${encodeURLString(fileName)}`;\n }\n\n encodedPath = encodeURLString(prefixPath);\n\n const identity = encodeURLString(\n `${bucketName}-${encodedPath}-${new Date().getTime()}-${Math.random()}`,\n );\n\n let xhr = new XMLHttpRequest();\n xhr.open(\"POST\", uploadUrl, true);\n if (anonymousMode) {\n xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n }\n // xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n\n const areMultipleFiles = files.length > 1;\n let errorMessage = `An error occurred while uploading the file${\n areMultipleFiles ? \"s\" : \"\"\n }.`;\n\n const errorMessages: any = {\n 413: \"Error - File size too large\",\n };\n\n xhr.withCredentials = false;\n xhr.onload = function () {\n // resolve promise only when HTTP code is ok\n if (xhr.status >= 200 && xhr.status < 300) {\n dispatch(completeObject(identity));\n resolve({ status: xhr.status });\n\n removeTrace(ID);\n } else {\n // reject promise if there was a server error\n if (errorMessages[xhr.status]) {\n errorMessage = errorMessages[xhr.status];\n } else if (xhr.response) {\n try {\n const err = JSON.parse(xhr.response);\n errorMessage = err.detailedMessage;\n } catch (e) {\n errorMessage = \"something went wrong\";\n }\n }\n\n dispatch(\n failObject({\n instanceID: identity,\n msg: errorMessage,\n }),\n );\n reject({ status: xhr.status, message: errorMessage });\n\n removeTrace(ID);\n }\n };\n\n xhr.upload.addEventListener(\"error\", () => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n }),\n );\n return;\n });\n\n xhr.upload.addEventListener(\"progress\", (event) => {\n const progress = Math.floor((event.loaded * 100) / event.total);\n\n dispatch(\n updateProgress({\n instanceID: identity,\n progress: progress,\n }),\n );\n });\n\n xhr.onerror = () => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n }),\n );\n return;\n };\n xhr.onloadend = () => {\n if (files.length === 0) {\n dispatch(setReloadObjectsList(true));\n }\n };\n xhr.onabort = () => {\n dispatch(cancelObjectInList(identity));\n };\n\n const formData = new FormData();\n if (file.size !== undefined) {\n formData.append(file.size.toString(), blobFile, fileName);\n storeCallForObjectWithID(ID, xhr);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identity,\n percentage: 0,\n prefix: `${decodeURLString(encodedPath)}${fileName}`,\n type: \"upload\",\n waitingForFile: false,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n }),\n );\n storeFormDataWithID(ID, formData);\n }\n });\n };\n\n const uploadFilePromises: any = [];\n // open object manager\n dispatch(openList());\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n uploadFilePromises.push(uploadPromise(file));\n }\n Promise.allSettled(uploadFilePromises).then((results: Array) => {\n const errors = results.filter(\n (result) => result.status === \"rejected\",\n );\n if (errors.length > 0) {\n const totalFiles = uploadFilePromises.length;\n const successUploadedFiles =\n uploadFilePromises.length - errors.length;\n const err: ErrorResponseHandler = {\n errorMessage: \"There were some errors during file upload\",\n detailedError: `Uploaded files ${successUploadedFiles}/${totalFiles}`,\n };\n dispatch(setErrorSnackMessage(err));\n }\n // We force objects list reload after all promises were handled\n dispatch(setReloadObjectsList(true));\n });\n };\n\n upload(files, bucketName, pathPrefix, folderPath);\n },\n [bucketName, dispatch, simplePath, anonymousMode],\n );\n\n const onDrop = useCallback(\n (acceptedFiles: any[]) => {\n if (acceptedFiles && acceptedFiles.length > 0 && canUpload) {\n let newFolderPath: string = acceptedFiles[0].path;\n //Should we filter by allowed file extensions if any?.\n let allowedFiles = acceptedFiles;\n\n if (allowedFileExtensions.length > 0) {\n allowedFiles = acceptedFiles.filter((file) => {\n const fileExtn = extractFileExtn(file.name);\n return allowedFileExtensions.includes(fileExtn);\n });\n }\n\n if (allowedFiles.length) {\n uploadObject(allowedFiles, newFolderPath);\n console.log(\n `${allowedFiles.length} Allowed Files Processed out of ${acceptedFiles.length}.`,\n pathAsResourceInPolicy,\n ...sessionGrantWildCards,\n );\n\n if (allowedFiles.length !== acceptedFiles.length) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Upload is restricted.\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n }\n } else {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Could not process drag and drop.\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n\n console.error(\n \"Could not process drag and drop . upload may be restricted.\",\n pathAsResourceInPolicy,\n ...sessionGrantWildCards,\n );\n }\n }\n if (!canUpload) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Upload not allowed\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [uploadObject],\n );\n\n const { getRootProps, getInputProps, isDragActive, isDragAccept } =\n useDropzone({\n noClick: true,\n onDrop,\n });\n\n const dndStyles = useMemo(\n () => ({\n ...baseDnDStyle,\n ...(isDragActive ? activeDnDStyle : {}),\n ...(isDragAccept ? acceptDnDStyle : {}),\n }),\n [isDragActive, isDragAccept],\n );\n\n const closeShareModal = () => {\n dispatch(setShareFileModalOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const rewindCloseModal = () => {\n setRewindSelect(false);\n };\n\n const closePreviewWindow = () => {\n dispatch(setPreviewOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const onClosePanel = (forceRefresh: boolean) => {\n dispatch(setSelectedObjectView(null));\n dispatch(setVersionsModeEnabled({ status: false }));\n if (detailsOpen && selectedInternalPaths !== null) {\n // We change URL to be the contained folder\n\n const decodedPath = decodeURLString(internalPaths);\n const splitURLS = decodedPath.split(\"/\");\n\n // We remove the last section of the URL as it should be a file\n splitURLS.pop();\n\n let URLItem = \"\";\n\n if (splitURLS && splitURLS.length > 0) {\n URLItem = `${splitURLS.join(\"/\")}/`;\n }\n\n navigate(`/browser/${bucketName}/${encodeURLString(URLItem)}`);\n }\n\n dispatch(setObjectDetailsView(false));\n\n if (forceRefresh) {\n dispatch(setReloadObjectsList(true));\n }\n };\n\n const setDeletedAction = () => {\n dispatch(resetMessages());\n dispatch(setShowDeletedObjects(!showDeleted));\n onClosePanel(true);\n };\n\n const closeRenameModal = () => {\n dispatch(setDownloadRenameModal(null));\n };\n\n const closeAddAccessRule = () => {\n dispatch(setAnonymousAccessOpen(false));\n };\n\n let createdTime = DateTime.now();\n\n if (bucketInfo?.creation_date) {\n createdTime = DateTime.fromISO(bucketInfo.creation_date) as DateTime;\n }\n\n const downloadToolTip =\n selectedObjects?.length <= 1\n ? \"Download Selected\"\n : ` Download selected objects as Zip. Any Deleted objects in the selection would be skipped from download.`;\n\n const multiActionButtons = [\n {\n action: () => {\n dispatch(downloadSelected(bucketName));\n },\n label: \"Download\",\n disabled: !canDownload || isSelObjectDelMarker,\n icon: ,\n tooltip: canDownload\n ? downloadToolTip\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download objects from this bucket\",\n ),\n },\n {\n action: () => {\n dispatch(openShare());\n },\n label: \"Share\",\n disabled:\n selectedObjects.length !== 1 || !canShareFile || isSelObjectDelMarker,\n icon: ,\n tooltip: canShareFile ? \"Share Selected File\" : \"Sharing unavailable\",\n },\n {\n action: () => {\n dispatch(openPreview());\n },\n label: \"Preview\",\n disabled:\n selectedObjects.length !== 1 || !canPreviewFile || isSelObjectDelMarker,\n icon: ,\n tooltip: canPreviewFile ? \"Preview Selected File\" : \"Preview unavailable\",\n },\n {\n action: () => {\n dispatch(openAnonymousAccess());\n },\n label: \"Anonymous Access\",\n disabled:\n selectedObjects.length !== 1 ||\n !selectedObjects[0].endsWith(\"/\") ||\n !canSetAnonymousAccess,\n icon: ,\n tooltip:\n selectedObjects.length === 1 && selectedObjects[0].endsWith(\"/\")\n ? \"Set Anonymous Access to this Folder\"\n : \"Anonymous Access unavailable\",\n },\n {\n action: () => {\n setDeleteMultipleOpen(true);\n },\n label: \"Delete\",\n icon: ,\n disabled: !canDelete || selectedObjects.length === 0,\n tooltip: canDelete\n ? \"Delete Selected Files\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_DELETE_OBJECT],\n \"delete objects in this bucket\",\n ),\n },\n ];\n\n return (\n \n {shareFileModalOpen && selectedPreview && (\n \n )}\n {deleteMultipleOpen && (\n \n )}\n {rewindSelect && (\n \n )}\n {previewOpen && selectedPreview && (\n \n )}\n {!!downloadRenameModal && (\n \n )}\n {anonymousAccessOpen && (\n \n )}\n\n \n {anonymousMode && (\n
\n \n
\n )}\n \n \n \n \n }\n title={bucketName}\n subTitle={\n !anonymousMode ? (\n \n \n Created on: \n \n {bucketInfo?.creation_date\n ? createdTime.toFormat(\n \"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\",\n )\n : \"\"}\n \n \n \n Access:  \n {bucketInfo?.access || \"\"}\n \n {bucketInfo && (\n \n \n {bucketInfo.size && (\n {niceBytesInt(bucketInfo.size)}\n )}\n {bucketInfo.size && quota && (\n \n {\" \"}\n / {niceBytesInt(quota.quota || 0)}\n \n )}\n {bucketInfo.size && bucketInfo.objects ? \" - \" : \"\"}\n {bucketInfo.objects && (\n \n {bucketInfo.objects} Object\n {bucketInfo.objects && bucketInfo.objects !== 1\n ? \"s\"\n : \"\"}\n \n )}\n \n \n )}\n \n ) : null\n }\n actions={\n \n {!anonymousMode && (\n \n \n \n \n }\n variant={\"regular\"}\n onClick={() => {\n setRewindSelect(true);\n }}\n disabled={!isVersioningApplied || !canRewind}\n />\n \n )}\n \n }\n variant={\"regular\"}\n onClick={() => {\n if (versionsMode) {\n dispatch(setLoadingVersions(true));\n } else {\n dispatch(resetMessages());\n dispatch(setReloadObjectsList(true));\n }\n }}\n disabled={\n anonymousMode\n ? false\n : !hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || rewindEnabled\n }\n />\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n closeMenu();\n }}\n uploadFolderFunction={(closeMenu) => {\n if (folderUpload && folderUpload.current) {\n folderUpload.current.click();\n }\n closeMenu();\n }}\n />\n \n }\n bottomBorder={false}\n />\n \n \n \n \n {versionsMode ? (\n \n {selectedInternalPaths !== null && (\n \n )}\n \n ) : (\n \n \n {!anonymousMode && (\n \n \n )\n }\n hidePathButton={false}\n />\n \n )}\n \n \n \n )}\n {!anonymousMode && (\n \n {\n onClosePanel(false);\n }}\n className={`${versionsMode ? \"hideListOnSmall\" : \"\"}`}\n >\n {selectedObjects.length > 0 && (\n \n )}\n {selectedInternalPaths !== null && (\n \n )}\n \n \n )}\n \n \n
\n
\n );\n};\n\nexport default ListObjects;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport {\n IAM_PAGES,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { BackLink, Button, SettingsIcon, Grid } from \"mds\";\nimport AutoColorIcon from \"../Common/Components/AutoColorIcon\";\nimport { useSelector } from \"react-redux\";\nimport { selFeatures } from \"../consoleSlice\";\nimport hasPermission from \"../../../common/SecureComponent/accessControl\";\nimport { useNavigate } from \"react-router-dom\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setSearchVersions } from \"./objectBrowserSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport FilterObjectsSB from \"./FilterObjectsSB\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport ObjectManagerButton from \"../Common/ObjectManager/ObjectManagerButton\";\nimport HelpMenu from \"../HelpMenu\";\nimport { setHelpName } from \"../../../systemSlice\";\n\ninterface IOBHeader {\n bucketName: string;\n}\n\nconst OBHeader = ({ bucketName }: IOBHeader) => {\n const dispatch = useAppDispatch();\n const features = useSelector(selFeatures);\n\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile,\n );\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions,\n );\n\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const navigate = useNavigate();\n\n const configureBucketAllowed = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_DELETE_BUCKET,\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_PUT_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_PUT_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n IAM_SCOPES.ADMIN_SET_BUCKET_QUOTA,\n IAM_SCOPES.S3_PUT_BUCKET_TAGGING,\n IAM_SCOPES.S3_GET_BUCKET_TAGGING,\n IAM_SCOPES.S3_LIST_BUCKET_VERSIONS,\n IAM_SCOPES.S3_GET_BUCKET_POLICY_STATUS,\n IAM_SCOPES.S3_DELETE_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const searchBar = (\n \n {!versionsMode ? (\n \n \n \n ) : (\n \n {\n dispatch(setSearchVersions(value));\n }}\n value={searchVersions}\n />\n \n )}\n \n );\n\n useEffect(() => {\n dispatch(setHelpName(\"object_browser\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {!obOnly ? (\n {\n navigate(IAM_PAGES.OBJECT_BROWSER_VIEW);\n }}\n />\n }\n actions={\n \n \n \n navigate(`/buckets/${bucketName}/admin`)}\n icon={\n \n }\n style={{\n padding: \"0 10px\",\n }}\n />\n \n \n \n \n }\n middleComponent={searchBar}\n />\n ) : (\n \n \n \n \n \n {searchBar}\n \n \n \n )}\n \n );\n};\n\nexport default OBHeader;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useParams } from \"react-router-dom\";\nimport { api } from \"api\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport { decodeURLString, encodeURLString } from \"../../../../common/utils\";\nimport {\n resetMessages,\n setIsVersioned,\n setLoadingLocking,\n setLoadingObjectInfo,\n setLoadingVersioning,\n setLoadingVersions,\n setLockingEnabled,\n setObjectDetailsView,\n setRequestInProgress,\n setSelectedObjectView,\n setVersionsModeEnabled,\n} from \"../../ObjectBrowser/objectBrowserSlice\";\nimport ListObjects from \"../ListBuckets/Objects/ListObjects/ListObjects\";\nimport hasPermission from \"../../../../common/SecureComponent/accessControl\";\nimport OBHeader from \"../../ObjectBrowser/OBHeader\";\n\nconst BrowserHandler = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const location = useLocation();\n\n const loadingVersioning = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersioning,\n );\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const rewindDate = useSelector(\n (state: AppState) => state.objectBrowser.rewind.dateToRewind,\n );\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted,\n );\n const requestInProgress = useSelector(\n (state: AppState) => state.objectBrowser.requestInProgress,\n );\n const loadingLocking = useSelector(\n (state: AppState) => state.objectBrowser.loadingLocking,\n );\n const reloadObjectsList = useSelector(\n (state: AppState) => state.objectBrowser.reloadObjectsList,\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n const selectedBucket = useSelector(\n (state: AppState) => state.objectBrowser.selectedBucket,\n );\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n\n const bucketName = params.bucketName || \"\";\n const pathSegment = location.pathname.split(`/browser/${bucketName}/`);\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n const initWSRequest = useCallback(\n (path: string) => {\n let currDate = new Date();\n\n let date = currDate.toISOString();\n\n if (rewindDate !== null && rewindEnabled) {\n date = rewindDate;\n }\n\n const payloadData = {\n bucketName,\n path,\n rewindMode: rewindEnabled || showDeleted,\n date: date,\n };\n\n dispatch({ type: \"socket/OBRequest\", payload: payloadData });\n },\n [bucketName, showDeleted, rewindDate, rewindEnabled, dispatch],\n );\n\n // Common path load\n const pathLoad = useCallback(\n (forceLoad: boolean = false) => {\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n // We exit Versions mode in case of path change\n dispatch(setVersionsModeEnabled({ status: false }));\n\n let searchPath = decodedInternalPaths;\n\n if (!decodedInternalPaths.endsWith(\"/\") && decodedInternalPaths !== \"\") {\n searchPath = `${decodedInternalPaths\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\")}/`;\n }\n\n if (searchPath === \"/\") {\n searchPath = \"\";\n }\n\n // If the path is different of the actual path or reload objects list is requested, then we initialize a new request to load a new record set.\n if (\n searchPath !== simplePath ||\n bucketName !== selectedBucket ||\n forceLoad\n ) {\n dispatch(setRequestInProgress(true));\n initWSRequest(searchPath);\n }\n },\n [\n internalPaths,\n dispatch,\n simplePath,\n selectedBucket,\n bucketName,\n initWSRequest,\n ],\n );\n\n useEffect(() => {\n return () => {\n dispatch({ type: \"socket/OBCancelLast\" });\n };\n }, [dispatch]);\n\n // Object Details handler\n useEffect(() => {\n const decodedIPaths = decodeURLString(internalPaths);\n\n dispatch(setLoadingVersioning(true));\n\n if (decodedIPaths.endsWith(\"/\") || decodedIPaths === \"\") {\n dispatch(setObjectDetailsView(false));\n dispatch(setSelectedObjectView(null));\n dispatch(setLoadingLocking(true));\n } else {\n dispatch(setLoadingObjectInfo(true));\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(\n setSelectedObjectView(\n `${decodedIPaths ? `${encodeURLString(decodedIPaths)}` : ``}`,\n ),\n );\n }\n }, [bucketName, internalPaths, rewindDate, rewindEnabled, dispatch]);\n\n // Navigation Listing Request\n useEffect(() => {\n pathLoad(false);\n }, [pathLoad]);\n\n // Reload Handler\n useEffect(() => {\n if (reloadObjectsList && records.length === 0 && !requestInProgress) {\n pathLoad(true);\n }\n }, [reloadObjectsList, records, requestInProgress, pathLoad]);\n\n const displayListObjects =\n hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || anonymousMode;\n\n useEffect(() => {\n if (loadingVersioning && !anonymousMode) {\n if (displayListObjects) {\n api.buckets\n .getBucketVersioning(bucketName)\n .then((res) => {\n dispatch(setIsVersioned(res.data));\n dispatch(setLoadingVersioning(false));\n })\n .catch((err) => {\n console.error(\n \"Error Getting Object Versioning Status: \",\n err.error.detailedMessage,\n );\n dispatch(setLoadingVersioning(false));\n });\n } else {\n dispatch(setLoadingVersioning(false));\n dispatch(resetMessages());\n }\n }\n }, [\n bucketName,\n loadingVersioning,\n dispatch,\n displayListObjects,\n anonymousMode,\n ]);\n\n useEffect(() => {\n if (loadingLocking) {\n if (displayListObjects) {\n api.buckets\n .getBucketObjectLockingStatus(bucketName)\n .then((res) => {\n dispatch(setLockingEnabled(res.data.object_locking_enabled));\n dispatch(setLoadingLocking(false));\n })\n .catch((err) => {\n console.error(\n \"Error Getting Object Locking Status: \",\n err.error.detailedMessage,\n );\n dispatch(setLoadingLocking(false));\n });\n } else {\n dispatch(resetMessages());\n dispatch(setLoadingLocking(false));\n }\n }\n }, [bucketName, loadingLocking, dispatch, displayListObjects]);\n\n return (\n \n {!anonymousMode && }\n \n \n );\n};\n\nexport default BrowserHandler;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { DateTime } from \"luxon\";\nimport { Box, InputBox, InputLabel, LinkIcon } from \"mds\";\n\nconst DAY_SECONDS = 86400;\nconst HOUR_SECONDS = 3600;\nconst HOUR_MINUTES = 60;\n\ninterface IDaysSelector {\n id: string;\n initialDate: Date;\n maxSeconds: number;\n label: string;\n entity: string;\n onChange: (newDate: string, isValid: boolean) => void;\n}\n\nconst calculateNewTime = (\n initialDate: Date,\n days: number,\n hours: number,\n minutes: number,\n) => {\n return DateTime.fromJSDate(initialDate).plus({\n hours: hours + days * 24,\n minutes,\n }); // Lump days into hours to avoid daylight savings causing issues\n};\n\nconst DaysSelector = ({\n id,\n initialDate,\n label,\n maxSeconds,\n entity,\n onChange,\n}: IDaysSelector) => {\n const maxDays = Math.floor(maxSeconds / DAY_SECONDS);\n const maxHours = Math.floor((maxSeconds % DAY_SECONDS) / HOUR_SECONDS);\n const maxMinutes = Math.floor((maxSeconds % HOUR_SECONDS) / HOUR_MINUTES);\n\n const [selectedDays, setSelectedDays] = useState(0);\n const [selectedHours, setSelectedHours] = useState(0);\n const [selectedMinutes, setSelectedMinutes] = useState(0);\n const [validDate, setValidDate] = useState(true);\n const [dateSelected, setDateSelected] = useState(DateTime.now());\n\n // Set initial values\n useEffect(() => {\n setSelectedDays(maxDays);\n setSelectedHours(maxHours);\n setSelectedMinutes(maxMinutes);\n }, [maxDays, maxHours, maxMinutes]);\n\n useEffect(() => {\n if (\n !isNaN(selectedHours) &&\n !isNaN(selectedDays) &&\n !isNaN(selectedMinutes)\n ) {\n setDateSelected(\n calculateNewTime(\n initialDate,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ),\n );\n }\n }, [initialDate, selectedDays, selectedHours, selectedMinutes]);\n\n useEffect(() => {\n if (validDate) {\n const formattedDate = dateSelected.toFormat(\"yyyy-MM-dd HH:mm:ss\");\n onChange(formattedDate.split(\" \").join(\"T\"), true);\n } else {\n onChange(\"0000-00-00\", false);\n }\n }, [dateSelected, onChange, validDate]);\n\n // Basic validation for inputs\n useEffect(() => {\n let valid = true;\n\n if (\n selectedDays < 0 ||\n selectedDays > 7 ||\n selectedDays > maxDays ||\n isNaN(selectedDays)\n ) {\n valid = false;\n }\n\n if (selectedHours < 0 || selectedHours > 23 || isNaN(selectedHours)) {\n valid = false;\n }\n\n if (selectedMinutes < 0 || selectedMinutes > 59 || isNaN(selectedMinutes)) {\n valid = false;\n }\n\n if (selectedDays === maxDays) {\n if (selectedHours > maxHours) {\n valid = false;\n }\n\n if (selectedHours === maxHours) {\n if (selectedMinutes > maxMinutes) {\n valid = false;\n }\n }\n }\n\n if (selectedDays <= 0 && selectedHours <= 0 && selectedMinutes <= 0) {\n valid = false;\n }\n\n setValidDate(valid);\n }, [\n dateSelected,\n maxDays,\n maxHours,\n maxMinutes,\n onChange,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ]);\n\n const extraStyles = {\n \"& .textBoxContainer\": {\n minWidth: 0,\n },\n \"& input\": {\n textAlign: \"center\" as const,\n paddingRight: 10,\n paddingLeft: 10,\n width: 40,\n },\n };\n\n return (\n \n \n {label}\n \n label\": {\n fontWeight: 400,\n marginLeft: 15,\n marginRight: 25,\n },\n },\n }}\n >\n \n {\n setSelectedDays(parseInt(e.target.value));\n }}\n value={selectedDays.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n {\n setSelectedHours(parseInt(e.target.value));\n }}\n value={selectedHours.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n {\n setSelectedMinutes(parseInt(e.target.value));\n }}\n value={selectedMinutes.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n .min-icon\": {\n color: \"#5E5E5E\",\n width: 15,\n height: 15,\n marginRight: 10,\n },\n },\n \"& .validTill\": {\n fontWeight: \"bold\",\n marginLeft: 15,\n },\n \"& .invalidDurationText\": {\n marginTop: 15,\n display: \"flex\",\n color: \"red\",\n fontSize: 11,\n },\n }}\n >\n {validDate ? (\n
\n \n
{entity} will be available until:
{\" \"}\n
\n {dateSelected.toFormat(\"MM/dd/yyyy HH:mm:ss ZZZZ\")}\n
\n
\n ) : (\n
\n Please select a valid duration.\n
\n )}\n \n \n );\n};\n\nexport default DaysSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport {\n Button,\n CopyIcon,\n ReadBox,\n ShareIcon,\n Grid,\n ProgressBar,\n Tooltip,\n} from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport DaysSelector from \"../../../../Common/FormComponents/DaysSelector/DaysSelector\";\nimport {\n encodeURLString,\n niceTimeFromSeconds,\n} from \"../../../../../../common/utils\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n setModalSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { getMaxShareLinkExpTime } from \"screens/Console/ObjectBrowser/objectBrowserThunks\";\nimport { maxShareLinkExpTime } from \"screens/Console/ObjectBrowser/objectBrowserSlice\";\n\ninterface IShareFileProps {\n open: boolean;\n bucketName: string;\n dataObject: BucketObject;\n closeModalAndRefresh: () => void;\n}\n\nconst ShareFile = ({\n open,\n closeModalAndRefresh,\n bucketName,\n dataObject,\n}: IShareFileProps) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const maxshareLinkExpTimeVal = useSelector(maxShareLinkExpTime);\n const [shareURL, setShareURL] = useState(\"\");\n const [isLoadingVersion, setIsLoadingVersion] = useState(true);\n const [isLoadingFile, setIsLoadingFile] = useState(false);\n const [selectedDate, setSelectedDate] = useState(\"\");\n const [dateValid, setDateValid] = useState(true);\n const [versionID, setVersionID] = useState(\"null\");\n\n const initialDate = new Date();\n\n const dateChanged = (newDate: string, isValid: boolean) => {\n setDateValid(isValid);\n if (isValid) {\n setSelectedDate(newDate);\n return;\n }\n setSelectedDate(\"\");\n setShareURL(\"\");\n };\n\n useEffect(() => {\n dispatch(getMaxShareLinkExpTime());\n }, [dispatch]);\n\n useEffect(() => {\n // In case version is undefined, we get the latest version of the object\n if (dataObject.version_id === undefined) {\n // In case it is not distributed setup, then we default to \"null\";\n if (distributedSetup) {\n api.buckets\n .listObjects(bucketName, {\n prefix: encodeURLString(dataObject.name || \"\"),\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result: BucketObject[] = res.data.objects || [];\n\n const latestVersion: BucketObject | undefined = result.find(\n (elem: BucketObject) => elem.is_latest,\n );\n\n if (latestVersion) {\n setVersionID(`${latestVersion.version_id}`);\n return;\n }\n\n // Version couldn't be retrieved, we default\n setVersionID(\"null\");\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(\"null\");\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(dataObject.version_id || \"null\");\n setIsLoadingVersion(false);\n }, [bucketName, dataObject, distributedSetup, dispatch]);\n\n useEffect(() => {\n if (dateValid && !isLoadingVersion) {\n setIsLoadingFile(true);\n setShareURL(\"\");\n\n const slDate = new Date(`${selectedDate}`);\n const currDate = new Date();\n\n const diffDate = Math.ceil(\n (slDate.getTime() - currDate.getTime()) / 1000,\n );\n\n if (diffDate > 0) {\n api.buckets\n .shareObject(bucketName, {\n prefix: encodeURLString(dataObject.name || \"\"),\n version_id: versionID,\n expires: selectedDate !== \"\" ? `${diffDate}s` : \"\",\n })\n .then((res) => {\n setShareURL(res.data);\n setIsLoadingFile(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setShareURL(\"\");\n setIsLoadingFile(false);\n });\n }\n }\n }, [\n dataObject,\n selectedDate,\n bucketName,\n dateValid,\n setShareURL,\n dispatch,\n distributedSetup,\n isLoadingVersion,\n versionID,\n ]);\n\n return (\n \n }\n modalOpen={open}\n onClose={() => {\n closeModalAndRefresh();\n }}\n >\n {isLoadingVersion && (\n \n \n \n )}\n {!isLoadingVersion && (\n \n \n \n You can reset your session by logging out and logging back\n in to the web UI.

\n You can increase the maximum configuration time by setting\n the MINIO_STS_DURATION environment variable on all your\n nodes.

\n You can use mc share as an alternative to this UI,\n where the session length does not limit the URL validity.\n \n }\n >\n \n The following URL lets you share this object without requiring\n a login.
\n The URL expires automatically at the earlier of your\n configured time ({niceTimeFromSeconds(maxshareLinkExpTimeVal)}\n ) or the expiration of your current web session.\n
\n \n \n
\n \n \n \n \n \n {\n dispatch(\n setModalSnackMessage(\"Share URL Copied to clipboard\"),\n );\n }}\n disabled={shareURL === \"\" || isLoadingFile}\n style={{\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n >\n {shareURL}\n \n \n
\n )}\n \n
\n );\n};\n\nexport default ShareFile;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Document, Page, pdfjs } from \"react-pdf\";\nimport { Box, Button, InformativeMessage } from \"mds\";\n\npdfjs.GlobalWorkerOptions.workerSrc = \"./scripts/pdf.worker.min.js\";\n\ninterface IPreviewPDFProps {\n path: string;\n loading: boolean;\n onLoad: () => void;\n downloadFile: () => void;\n}\n\nconst PreviewPDF = ({\n path,\n loading,\n onLoad,\n downloadFile,\n}: IPreviewPDFProps) => {\n const [errorState, setErrorState] = useState(false);\n const [totalPages, setTotalPages] = useState(0);\n\n if (!path) {\n return null;\n }\n\n const renderPages = totalPages > 5 ? 5 : totalPages;\n const arrayCreate = Array.from(Array(renderPages).keys());\n\n return (\n \n {errorState && totalPages === 0 && (\n \n File preview couldn't be displayed, Please try Download instead.\n \n \n Download File\n \n \n \n }\n sx={{ marginBottom: 10 }}\n />\n )}\n {!loading && !errorState && (\n \n This is a File Preview for the first {arrayCreate.length} pages of\n the document, if you wish to work with the full document please\n download instead.\n \n \n Download File\n \n \n \n }\n sx={{ marginBottom: 10 }}\n />\n )}\n {!errorState && (\n \n {\n setTotalPages(_pdfInfo.numPages || 0);\n setErrorState(false);\n onLoad();\n }}\n onLoadError={(error) => {\n setErrorState(true);\n onLoad();\n console.error(error);\n }}\n >\n {arrayCreate.map((item) => (\n \n ))}\n \n \n )}\n \n );\n};\n\nexport default PreviewPDF;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { ProgressBar, Grid, Box, InformativeMessage } from \"mds\";\nimport get from \"lodash/get\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport { api } from \"../../../../../../api\";\nimport PreviewPDF from \"./PreviewPDF\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject } from \"../../../../../../api/consoleApi\";\n\ninterface IPreviewFileProps {\n bucketName: string;\n actualInfo: BucketObject;\n isFullscreen?: boolean;\n}\n\nconst PreviewFile = ({\n bucketName,\n actualInfo,\n isFullscreen = false,\n}: IPreviewFileProps) => {\n const dispatch = useAppDispatch();\n\n const [loading, setLoading] = useState(true);\n\n const [metaData, setMetaData] = useState(null);\n const [isMetaDataLoaded, setIsMetaDataLoaded] = useState(false);\n\n const objectName = actualInfo?.name || \"\";\n\n const fetchMetadata = useCallback(() => {\n if (!isMetaDataLoaded) {\n const encodedPath = encodeURLString(objectName);\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: encodedPath,\n versionID: actualInfo.version_id || \"\",\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n setIsMetaDataLoaded(true);\n setMetaData(metadata);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Metadata Status: \",\n err,\n err?.detailedError,\n );\n setIsMetaDataLoaded(true);\n });\n }\n }, [bucketName, objectName, isMetaDataLoaded, actualInfo.version_id]);\n\n useEffect(() => {\n if (bucketName && objectName) {\n fetchMetadata();\n }\n }, [bucketName, objectName, fetchMetadata]);\n\n let path = \"\";\n\n if (actualInfo) {\n const encodedPath = encodeURLString(actualInfo.name || \"\");\n let basename = document.baseURI.replace(window.location.origin, \"\");\n path = `${window.location.origin}${basename}api/v1/buckets/${bucketName}/objects/download?preview=true&prefix=${encodedPath}`;\n if (actualInfo.version_id) {\n path = path.concat(`&version_id=${actualInfo.version_id}`);\n }\n }\n\n let objectType: AllowedPreviews = previewObjectType(metaData, objectName);\n\n const iframeLoaded = () => {\n setLoading(false);\n };\n\n return (\n \n {objectType !== \"none\" && loading && (\n \n \n \n )}\n {isMetaDataLoaded ? (\n \n {objectType === \"video\" && (\n \n \n \n )}\n {objectType === \"audio\" && (\n \n \n \n )}\n {objectType === \"image\" && (\n \n )}\n {objectType === \"pdf\" && (\n \n \n downloadObject(dispatch, bucketName, path, actualInfo)\n }\n />\n \n )}\n {objectType === \"none\" && (\n
\n \n
\n )}\n {objectType !== \"none\" &&\n objectType !== \"video\" &&\n objectType !== \"audio\" &&\n objectType !== \"image\" &&\n objectType !== \"pdf\" && (\n
\n \n File couldn't be loaded. Please try Download instead\n \n
\n )}\n \n ) : null}\n
\n );\n};\nexport default PreviewFile;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PreviewFileContent from \"./PreviewFileContent\";\nimport { ObjectPreviewIcon } from \"mds\";\nimport { BucketObject } from \"../../../../../../api/consoleApi\";\n\ninterface IPreviewFileProps {\n open: boolean;\n bucketName: string;\n actualInfo: BucketObject;\n onClosePreview: () => void;\n}\n\nconst PreviewFileModal = ({\n open,\n bucketName,\n actualInfo,\n onClosePreview,\n}: IPreviewFileProps) => {\n return (\n \n }\n >\n \n \n \n );\n};\n\nexport default PreviewFileModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { AppState } from \"../../../store\";\nimport { encodeURLString, getClientOS } from \"../../../common/utils\";\nimport { BucketObjectItem } from \"../Buckets/ListBuckets/Objects/ListObjects/types\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport {\n download,\n downloadSelectedAsZip,\n} from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setAnonymousAccessOpen,\n setDownloadRenameModal,\n setMaxShareLinkExpTime,\n setNewObject,\n setPreviewOpen,\n setSelectedPreview,\n setShareFileModalOpen,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { DateTime } from \"luxon\";\nimport { api } from \"api\";\n\nexport const downloadSelected = createAsyncThunk(\n \"objectBrowser/downloadSelected\",\n async (bucketName: string, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const downloadObject = (object: BucketObjectItem) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`,\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n encodeURLString(object.name),\n object.version_id,\n object.size,\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n }),\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n },\n () => {\n dispatch(\n setSnackBarMessage(\n \"File download will be handled directly by the browser.\",\n ),\n );\n },\n );\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n }),\n );\n };\n\n if (state.objectBrowser.selectedObjects.length !== 0) {\n let itemsToDownload: BucketObjectItem[] = [];\n\n const filterFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n itemsToDownload = state.objectBrowser.records.filter(filterFunction);\n\n // In case just one element is selected, then we trigger download modal validation.\n if (itemsToDownload.length === 1) {\n if (\n itemsToDownload[0].name.length > 200 &&\n getClientOS().toLowerCase().includes(\"win\")\n ) {\n dispatch(setDownloadRenameModal(itemsToDownload[0]));\n return;\n } else {\n downloadObject(itemsToDownload[0]);\n }\n } else {\n if (itemsToDownload.length === 1) {\n downloadObject(itemsToDownload[0]);\n } else if (itemsToDownload.length > 1) {\n const fileName = `${DateTime.now().toFormat(\n \"LL-dd-yyyy-HH-mm-ss\",\n )}_files_list.zip`;\n\n // We are enforcing zip download when multiple files are selected for better user experience\n const multiObjList = itemsToDownload.reduce((dwList: any[], bi) => {\n // Download objects/prefixes(recursively) as zip\n // Skip any deleted files selected via \"Show deleted objects\" in selection and log for debugging\n const isDeleted = bi?.delete_flag;\n if (bi && !isDeleted) {\n dwList.push(bi.name);\n } else {\n console.log(`Skipping ${bi?.name} from download.`);\n }\n return dwList;\n }, []);\n\n await downloadSelectedAsZip(bucketName, multiObjList, fileName);\n return;\n }\n }\n }\n },\n);\n\nexport const openPreview = createAsyncThunk(\n \"objectBrowser/openPreview\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setPreviewOpen(true));\n }\n }\n },\n);\n\nexport const openShare = createAsyncThunk(\n \"objectBrowser/openShare\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setShareFileModalOpen(true));\n }\n }\n },\n);\n\nexport const openAnonymousAccess = createAsyncThunk(\n \"objectBrowser/openAnonymousAccess\",\n async (_, { getState, dispatch }) => {\n const state = getState() as AppState;\n\n if (\n state.objectBrowser.selectedObjects.length === 1 &&\n state.objectBrowser.selectedObjects[0].endsWith(\"/\")\n ) {\n dispatch(setAnonymousAccessOpen(true));\n }\n },\n);\n\nexport const getMaxShareLinkExpTime = createAsyncThunk(\n \"objectBrowser/maxShareLinkExpTime\",\n async (_, { rejectWithValue, dispatch }) => {\n return api.buckets\n .getMaxShareLinkExp()\n .then((res) => {\n dispatch(setMaxShareLinkExpTime(res.data.exp));\n })\n .catch(async (res) => {\n return rejectWithValue(res.error);\n });\n },\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { encodeURLString, getClientOS } from \"../../../common/utils\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLongFileOpen,\n setNewObject,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { AppDispatch } from \"../../../store\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { BucketObject } from \"api/consoleApi\";\n\nexport const downloadObject = (\n dispatch: AppDispatch,\n bucketName: string,\n internalPaths: string,\n object: BucketObject,\n) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`,\n );\n\n const isWinOs = getClientOS().toLowerCase().includes(\"win\");\n\n if ((object.name?.length || 0) > 200 && isWinOs) {\n dispatch(setLongFileOpen(true));\n return;\n }\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n object.size || 0,\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n }),\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n },\n () => {\n dispatch(\n setSnackBarMessage(\n \"File download will be handled directly by the browser.\",\n ),\n );\n },\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name || \"\",\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n }),\n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button, CopyIcon, InputBox, Box, breakPoints } from \"mds\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n readOnly={true}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n"],"names":["_ref","modalOpen","onClose","bucket","prefilledRoute","dispatch","useAppDispatch","prefix","setPrefix","useState","selectedAccess","setSelectedAccess","useEffect","_jsx","ModalWrapper","title","titleIcon","AddAccessRuleIcon","children","_jsxs","FormLayout","withBorders","containerPadding","InputBox","value","label","id","name","placeholder","onChange","e","target","tooltip","Select","options","disabled","helpTip","Fragment","helpTipPlacement","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","resetForm","trim","createProcess","api","setAccessRuleWithBucket","access","then","res","setSnackBarMessage","catch","setErrorSnackMessage","errorToHandler","error","extractFileExtn","resourceStr","match","getSessionGrantsWildCard","sessionGrants","uploadPath","scopes","arguments","length","undefined","grantsWithExtension","Object","keys","reduce","acc","grantKey","includes","filter","sessionGrantKey","hasScope","some","actionKey","find","scopeKey","wildCardMatch","indexOf","scopeActionKey","substring","isUploadPathMatching","concat","CreatePathModal","withSuspense","React","BreadcrumbsMain","styled","div","display","paddingRight","alignItems","breakPoints","lg","margin","bucketName","internalPaths","hidePathButton","additionalOptions","navigate","useNavigate","rewindEnabled","useSelector","state","objectBrowser","rewind","versionsMode","versionedFile","anonymousMode","system","createFolderOpen","setCreateFolderOpen","canCreateSubpath","setCanCreateSubpath","putObjectPermScopes","IAM_SCOPES","S3_PUT_OBJECT","S3_PUT_ACTIONS","console","session","permissions","paths","splitPaths","split","path","lastBreadcrumbsIndex","pathToCheckPerms","sessionGrantWildCards","forEach","grant","canCreatePath","hasPermission","breadcrumbsMap","map","objectItem","index","subSplit","slice","join","route","encodeURLString","className","style","cursor","whiteSpace","safeDecodeURIComponent","Link","to","setVersionsModeEnabled","status","objectName","toString","versionsItem","listBreadcrumbs","folderName","closeAddFolderModal","limitedSubPath","Breadcrumbs","goBackFunction","prevPath","CopyToClipboard","text","icon","CopyIcon","width","height","fill","marginTop","color","border","marginRight","Box","Tooltip","permissionTooltipHelper","NewPathIcon","marginBottom","justifyContent","fontSize","fontWeight","flexDirection","flexWrap","isVersionedMode","forceDisable","uploadFileFunction","uploadFolderFunction","overrideStyles","anchorEl","setAnchorEl","uploadOptionsOpen","uploadOptionsSetOpen","openUploadMenu","Boolean","handleCloseUpload","uploadObjectAllowed","uploadFolderAllowed","uploadEnabled","TooltipWrapper","event","currentTarget","UploadIcon","DropdownSelector","UploadFolderIcon","selectedOption","onSelect","nValue","hideTriggerAction","open","anchorOrigin","useAnchorWidth","closePanel","borderColor","borderWidth","borderStyle","borderRadius","borderBottomLeftRadius","borderBottomRightRadius","transitionDuration","overflowX","overflowY","position","opacity","marginLeft","minWidth","borderLeftWidth","ClosePanelIcon","right","top","padding","backgroundColor","strings","minHeight","overflow","textOverflow","replaceUnicodeChar","extensionToIcon","FileVideoIcon","extensions","FileMusicIcon","FilePdfIcon","FilePptIcon","FileXlsIcon","FileLockIcon","FileCodeIcon","FileConfigIcon","FileDbIcon","FileFontIcon","FileTxtIcon","FileZipIcon","FileBookIcon","FileImageIcon","displayFileIconName","element","returnOnlyIcon","elementString","FileNonType","endsWith","FolderBrowserIcon","lowercaseElement","toLowerCase","etc","ext","FileMissingIcon","splitItem","IconWithLabel","metaData","metaKeys","renderItem","Array","isArray","itemRendererFn","maxHeight","months","days","from","_","num","currentYear","Date","getFullYear","years","numYear","forwardRef","ref","disableOptions","borderBottom","onDateChange","useImperativeHandle","resetDate","month","setMonth","day","setDay","year","setYear","valueSplit","parseInt","isValid","dateString","validDate","currentDate","parse","isNaN","parsedMonth","parsedDay","monthForString","dayForString","parsedDate","toISOString","isDateDisabled","monthForDropDown","daysForDrop","yearsForDrop","gap","InputLabel","htmlFor","placement","HelpIcon","newValue","closeModalAndRefresh","objectInfo","retentionConfig","statusEnabled","setStatusEnabled","setType","date","setDate","isDateValid","setIsDateValid","isSaving","setIsSaving","alreadyConfigured","setAlreadyConfigured","retention_mode","mode","ObjectRetentionMode","Governance","retention_until_date","valueDate","getMonth","getDate","dateElement","useRef","current","showSwitcher","noValidate","autoComplete","onSubmit","preventDefault","Switch","checked","indicatorLabels","RadioGroup","currentValue","selectorOptions","Compliance","DateSelector","saveNewRetentionPolicy","selectedObject","versionId","version_id","expireDate","addRetention","buckets","putObjectRetention","expires","err","setModalErrorSnackMessage","disableRetention","deleteObjectRetention","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","versioningInfo","selectedVersion","deleteLoading","invokeDeleteApi","useApi","onDelSuccess","detailedError","deleteVersions","setDeleteVersions","bypassGovernance","setBypassGovernance","canBypass","S3_BYPASS_GOVERNANCE_RETENTION","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","recursive","decodeURLString","confirmationContent","description","actualInfo","legalHoldEnabled","setLegalHoldEnabled","get","putObjectLegalHold","ObjectLegalHoldStatus","Enabled","Disabled","DeleteTag","b","theme","_ref2","_actualInfo$name","onCloseAndUpdate","distributedSetup","selDistSet","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","deleteEnabled","setDeleteEnabled","deleteKey","setDeleteKey","deleteLabel","setDeleteLabel","currentTags","tags","currTagKeys","allPathData","currentItem","pop","tagsFor","plural","iconColor","DisabledIcon","EditTagIcon","container","cancelDelete","deleteTagProcess","cleanObject","verID","putObjectTags","SecureComponent","S3_GET_OBJECT_TAGGING","S3_GET_ACTIONS","resource","flexFlow","tagKey","tag","S3_DELETE_OBJECT_TAGGING","errorProps","deleteIcon","onDelete","Tag","onDeleteTag","S3_PUT_OBJECT_TAGGING","SectionTitle","AddNewTagIcon","separator","addTagProcess","newTag","newTagList","closeInspectModalAndRefresh","inspectOpen","inspectPath","volumeName","isEncrypt","setIsEncrypt","decryptionKey","setDecryptionKey","insFileName","setInsFileName","InspectMenuIcon","async","file","volume","basename","document","baseURI","replace","window","location","origin","fetch","url","method","makeRequest","ok","resErr","json","errorMessage","message","code","blob","filename","headers","decryptKey","getCookieValue","performDownload","onCloseDecKeyModal","deleteCookie","PasswordKeyIcon","KeyRevealer","closeModal","newFileName","setNewFileName","acceptLongName","setAcceptLongName","EditIcon","downloadObject","doDownload","emptyFile","is_latest","last_modified","legal_hold_status","size","locking","onClosePanel","loadingObjectInfo","shareFileModalOpen","setShareFileModalOpen","retentionModalOpen","setRetentionModalOpen","tagModalOpen","setTagModalOpen","legalholdOpen","setLegalholdOpen","inspectModalOpen","setInspectModalOpen","setActualInfo","allInfoElements","setAllInfoElements","objectToShare","setObjectToShare","versions","setVersions","setDeleteOpen","previewOpen","setPreviewOpen","totalVersionsSize","setTotalVersionsSize","longFileOpen","setLongFileOpen","setMetaData","loadMetadata","setLoadingMetadata","objectNameArray","infoElement","el","is_delete_marker","listObjects","with_versions","result","data","objects","tVersionSize","currValue","resInfo","setLoadingObjectInfo","getObjectMetadata","versionID","metadata","tagKeys","loaderForContainer","textAlign","Loader","objectResources","canSetLegalHold","S3_PUT_OBJECT_LEGAL_HOLD","canSetTags","canChangeRetention","S3_GET_OBJECT_RETENTION","S3_PUT_OBJECT_RETENTION","canInspect","ADMIN_INSPECT_DATA","canChangeVersioning","S3_GET_BUCKET_VERSIONING","S3_PUT_BUCKET_VERSIONING","S3_GET_OBJECT_VERSION","canGetObject","S3_GET_OBJECT","canDelete","S3_DELETE_OBJECT","objectType","previewObjectType","multiActionButtons","action","DownloadIcon","ShareIcon","PreviewIcon","LegalHoldIcon","openRetentionModal","RetentionIcon","TagsIcon","VersionsIcon","ShareFile","closeShareModal","dataObject","SetRetention","updateInfo","DeleteObject","closeAndReload","setLoadingVersions","setSelectedVersion","SetLegalHoldModal","reload","PreviewFileModal","onClosePreview","TagsModal","reloadObjectData","InspectObject","RenameLongFileName","closeFileOpen","textTransform","ActionsList","items","DeleteIcon","iconLocation","fullWidth","SimpleHeader","ObjectInfoIcon","overflowWrap","niceBytes","niceBytesInt","lastModified","currentTime","modifiedTime","difTime","getTime","formatTime","niceDaysInt","calculateLastModifyTime","etag","S3_GET_OBJECT_LEGAL_HOLD","MetadataIcon","ObjectMetaData","versionToRestore","objectPath","restoreOpen","restoreLoading","setRestoreLoading","RecoverIcon","restoreVersion","putObjectRestore","restoreLocalObjectList","confirmButtonProps","bgColor","FileVersionStyled","content","left","borderBottomColor","maxWidth","fileName","versionInfo","isSelected","checkable","isChecked","onCheck","onShare","onDownload","onRestore","onPreview","globalClick","key","disableButtons","versionItemButtons","pill","DateTime","now","fromISO","md","Checkbox","stopPropagation","SpecificVersionPill","button","IconButton","toFormat","setDeleteLoading","typeConfirm","setTypeConfirm","deleteObject","non_current_versions","bypass","selectedVersions","selectedObjectsRequest","deleteMultipleObjects","all_versions","searchVersions","loadingVersions","restoreVersionOpen","setRestoreVersionOpen","setRestoreVersion","sortValue","setSortValue","deleteNonCurrentOpen","setDeleteNonCurrentOpen","selectEnabled","setSelectEnabled","selectedItems","setSelectedItems","delSelectedVOpen","setDelSelectedVOpen","decodedInternalPaths","filteredPrefixes","onShareItem","onPreviewItem","onRestoreItem","onDownloadItem","onGlobalClick","filteredRecords","version","totalSpace","sort","a","dateA","dateB","onCheckVersion","filteredItems","cloneState","push","RestoreFileVersion","content_type","DeleteNonCurrent","reloadAfterDelete","DeleteSelectedVersions","reloadOnComplete","ProgressBar","BrowserBreadcrumbs","ScreenTitle","subTitle","actions","SelectMultipleIcon","DeleteNonCurrentIcon","noLabelMinWidth","bottomBorder","flexGrow","List","containerStyle","rowCount","rowHeight","rowRenderer","isScrolling","isVisible","versOrd","FileVersionItem","displayParsedDate","object","currTime","objectTime","hasSame","displayNiceBytes","String","listModeColumns","elementKey","renderFunction","enableSort","renderFullObject","rewindModeColumns","ListObjectsTable","params","useParams","sortDirection","setSortDirection","currentSortField","setCurrentSortField","detailsOpen","objectDetailsOpen","requestInProgress","features","selFeatures","obOnly","records","searchObjects","selectedObjects","connectionError","displayListObjects","S3_LIST_BUCKET","S3_ALL_LIST_BUCKET","sortASC","sortListObjects","payload","reverse","tableActions","_object$name","idElement","newPath","setSelectedObjects","setObjectDetailsView","setSelectedObjectView","sendOnlyId","customPaperHeight","DataTable","itemActions","columns","entityName","idField","targetD","elements","customEmptyMessage","sortEnabled","currentSort","currentDirection","onSortClick","sortData","newSortDirection","sortBy","setReloadObjectsList","onSelectAll","selectAllItems","rowStyle","_payload$index","delete_flag","noBackground","FilterObjectsSB","SearchBox","setSearchObjects","DeleteMultipleObjects","RewindEnable","baseDnDStyle","outline","activeDnDStyle","acceptDnDStyle","ListObjects","_downloadRenameModal$","useLocation","bucketToRewind","showDeleted","selectedInternalPaths","simplePath","versioningConfig","lockingEnabled","downloadRenameModal","selectedPreview","anonymousAccessOpen","_state$objectBrowser","loadingBucket","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","deleteMultipleOpen","setDeleteMultipleOpen","rewindSelect","setRewindSelect","iniLoad","setIniLoad","canShareFile","setCanShareFile","canPreviewFile","setCanPreviewFile","quota","setQuota","isMetaDataLoaded","setIsMetaDataLoaded","isVersioningApplied","pathSegment","pathname","pageTitle","currentPath","i","fileUpload","folderUpload","pathAsResourceInPolicy","allowedFileExtensions","cv","extension","Set","getPolicyAllowedFileExtensions","canDownload","canRewind","canUpload","canSetAnonymousAccess","S3_GET_BUCKET_POLICY","S3_PUT_BUCKET_POLICY","isSelObjectDelMarker","checkForDelMarker","isObjDelMarker","obj","fetchMetadata","useCallback","encodedPath","resetRewind","setAttribute","isPrefix","getBucketQuota","quotaVals","detailedMessage","setBucketDetailsLoad","setBucketInfo","getBucketRetentionConfig","setRetentionConfig","handleUploadButton","files","newFiles","uploadObject","folderPath","pathPrefix","upload","uploadPromise","Promise","resolve","reject","uploadUrl","blobFile","Blob","filePath","fileWebkitRelativePath","relativeFolderPath","ID","makeid","prefixPath","finalFolderPath","pathClean","startsWith","identity","Math","random","xhr","XMLHttpRequest","setRequestHeader","areMultipleFiles","errorMessages","withCredentials","onload","completeObject","removeTrace","response","JSON","failObject","instanceID","msg","addEventListener","progress","floor","loaded","total","updateProgress","onerror","onloadend","onabort","cancelObjectInList","formData","FormData","append","storeCallForObjectWithID","setNewObject","done","percentage","waitingForFile","failed","cancelled","storeFormDataWithID","uploadFilePromises","openList","allSettled","results","errors","totalFiles","successUploadedFiles","onDrop","acceptedFiles","newFolderPath","allowedFiles","fileExtn","log","getRootProps","getInputProps","isDragActive","isDragAccept","useDropzone","noClick","dndStyles","useMemo","forceRefresh","splitURLS","URLItem","createdTime","creation_date","downloadToolTip","downloadSelected","openShare","openPreview","openAnonymousAccess","AccessRuleIcon","setSelectedPreview","refresh","versioning","rewindCloseModal","closePreviewWindow","closeRenameModal","setDownloadRenameModal","AddAccessRule","closeAddAccessRule","setAnonymousAccessOpen","PageLayout","paddingBottom","BucketsIcon","Badge","dotOnly","invisible","HistoryIcon","RefreshIcon","resetMessages","multiple","accept","UploadFilesButton","closeMenu","click","borderTop","VersionsNavigator","setDeletedAction","setShowDeletedObjects","DetailsListPanel","ObjectDetailPanel","configureBucketAllowed","S3_GET_BUCKET_ENCRYPTION_CONFIGURATION","S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION","S3_DELETE_BUCKET","S3_GET_BUCKET_NOTIFICATIONS","S3_PUT_BUCKET_NOTIFICATIONS","S3_GET_REPLICATION_CONFIGURATION","S3_PUT_REPLICATION_CONFIGURATION","S3_GET_LIFECYCLE_CONFIGURATION","S3_PUT_LIFECYCLE_CONFIGURATION","ADMIN_GET_BUCKET_QUOTA","ADMIN_SET_BUCKET_QUOTA","S3_PUT_BUCKET_TAGGING","S3_GET_BUCKET_TAGGING","S3_LIST_BUCKET_VERSIONS","S3_GET_BUCKET_POLICY_STATUS","S3_DELETE_BUCKET_POLICY","searchBar","setSearchVersions","setHelpName","AutoColorIcon","ObjectManagerButton","PageHeaderWrapper","BackLink","IAM_PAGES","OBJECT_BROWSER_VIEW","IAM_PERMISSIONS","IAM_ROLES","BUCKET_ADMIN","SettingsIcon","HelpMenu","middleComponent","BrowserHandler","loadingVersioning","rewindDate","dateToRewind","loadingLocking","reloadObjectsList","initWSRequest","rewindMode","pathLoad","forceLoad","searchPath","setRequestInProgress","decodedIPaths","setLoadingVersioning","setLoadingLocking","getBucketVersioning","setIsVersioned","getBucketObjectLockingStatus","setLockingEnabled","object_locking_enabled","OBHeader","initialDate","maxSeconds","entity","maxDays","maxHours","maxMinutes","selectedDays","setSelectedDays","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","setValidDate","dateSelected","setDateSelected","calculateNewTime","hours","minutes","fromJSDate","plus","formattedDate","valid","extraStyles","paddingLeft","min","max","LinkIcon","maxshareLinkExpTimeVal","maxShareLinkExpTime","shareURL","setShareURL","isLoadingVersion","setIsLoadingVersion","isLoadingFile","setIsLoadingFile","selectedDate","setSelectedDate","dateValid","setDateValid","setVersionID","getMaxShareLinkExpTime","latestVersion","elem","slDate","currDate","diffDate","ceil","shareObject","niceTimeFromSeconds","DaysSelector","dateChanged","newDate","ReadBox","actionButton","setModalSnackMessage","pdfjs","GlobalWorkerOptions","workerSrc","loading","onLoad","downloadFile","errorState","setErrorState","totalPages","setTotalPages","renderPages","arrayCreate","InformativeMessage","Document","onLoadSuccess","_pdfInfo","numPages","onLoadError","Page","pageNumber","renderAnnotationLayer","renderTextLayer","renderForms","isFullscreen","setLoading","iframeLoaded","flex","autoPlay","controls","muted","playsInline","onPlay","src","alt","PreviewPDF","allowTransparency","wideLimit","ObjectPreviewIcon","PreviewFileContent","WrappedComponent","fallback","props","Suspense","createAsyncThunk","getState","rejectWithValue","identityDownload","downloadCall","download","itemsToDownload","filterFunction","getClientOS","multiObjList","dwList","bi","isDeleted","downloadSelectedAsZip","fileObject","findFunction","_ref3","_ref4","_ref5","getMaxShareLinkExp","setMaxShareLinkExpTime","exp","isWinOs","shown","setShown","sm","overlayIcon","readOnly","overlayAction","navigator","clipboard","writeText"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/2959.f25a9ef1.chunk.js b/web-app/build/static/js/2959.f25a9ef1.chunk.js new file mode 100644 index 000000000..bd6f5b5e4 --- /dev/null +++ b/web-app/build/static/js/2959.f25a9ef1.chunk.js @@ -0,0 +1,2 @@ +(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[2959,614],{30614:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var s=n(65043),o=n(94141),a=n(89923),i=n(56629),l=n(53518),r=n(77403),c=n(64159),d=n(20554),u=n(70579);const h=e=>{let{modalOpen:t,onClose:n,bucket:h,prefilledRoute:m}=e;const x=(0,d.jL)(),[p,j]=(0,s.useState)(""),[b,g]=(0,s.useState)("readonly");(0,s.useEffect)((()=>{m&&j(m)}),[m]);return(0,u.jsx)(o.A,{modalOpen:t,title:"Add Anonymous Access Rule",onClose:n,titleIcon:(0,u.jsx)(a.No_,{}),children:(0,u.jsxs)(a.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,u.jsx)(a.cl_,{value:p,label:"Prefix",id:"prefix",name:"prefix",placeholder:"Enter Prefix",onChange:e=>{j(e.target.value)},tooltip:"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy."}),(0,u.jsx)(a.l6P,{id:"access",name:"Access",onChange:e=>{g(e)},label:"Access",value:b,options:[{label:"readonly",value:"readonly"},{label:"writeonly",value:"writeonly"},{label:"readwrite",value:"readwrite"}],disabled:!1,helpTip:(0,u.jsx)(s.Fragment,{children:"Select the desired level of access available to unauthenticated Users"}),helpTipPlacement:"right"}),(0,u.jsxs)(a.xA9,{item:!0,xs:12,sx:r.Uz.modalButtonBar,children:[(0,u.jsx)(a.$nd,{id:"clear",type:"button",variant:"regular",onClick:()=>{j(""),g("readonly")},label:"Clear"}),(0,u.jsx)(a.$nd,{id:"add-access-save",type:"submit",variant:"callAction",disabled:""===p.trim(),onClick:()=>{i.F.bucket.setAccessRuleWithBucket(h,{prefix:p,access:b}).then((e=>{x((0,c.Hk)("Access Rule added successfully")),n()})).catch((e=>{x((0,c.C9)((0,l.S)(e.error))),n()}))},label:"Save"})]})]})})}},27945:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Me});var s=n(65043),o=n(22166),a=n(73216),i=n(56629),l=n(20554),r=n(99161),c=n(6035),d=n(33097),u=n.n(d),h=n(89923),m=n(53518),x=n(94281),p=n(24241),j=n(56483),b=n(61476),g=n.n(b),f=n(94574),v=n(35475),_=n(77938),S=n(72237),O=n(64159);const w=e=>(e.match(/\.([^.]*?)(?=\?|#|$)/)||[])[1],T=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const s=Object.keys(e).reduce(((n,s)=>(w(s)&&s.includes(t)&&(n[s]=e[s]),n)),{});return Object.keys(s).filter((e=>{const o=s[e].some((e=>n.find((t=>{let n=!1;if(-1!==t.indexOf("*")){const s=t.substring(0,t.length-1);n=e.includes(s)}return n||e===t})))),a=e.substring(0,e.indexOf("/*."))==="arn:aws:s3:::".concat(t);return o&&(a&&"arn:aws:s3:::*"!==e)}))};var C=n(70579);const y=(0,S.A)(s.lazy((()=>n.e(7774).then(n.bind(n,97774))))),E=f.Ay.div((()=>({display:"flex","& .additionalOptions":{paddingRight:"10px",display:"flex",alignItems:"center",["@media (max-width: ".concat(h.nmC.lg,"px)")]:{display:"none"}},"& .slashSpacingStyle":{margin:"0 5px"}}))),I=e=>{let{bucketName:t,internalPaths:n,hidePathButton:i,additionalOptions:d}=e;const u=(0,l.jL)(),m=(0,a.Zp)(),x=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),p=(0,o.d4)((e=>e.objectBrowser.versionsMode)),b=(0,o.d4)((e=>e.objectBrowser.versionedFile)),f=(0,o.d4)((e=>e.system.anonymousMode)),[S,w]=(0,s.useState)(!1),[I,N]=(0,s.useState)(!1),A=[r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],k=(0,o.d4)((e=>e.console.session&&e.console.session.permissions||{}));let B=n;""!==n&&(B="/".concat(n));const F=B.split("/").filter((e=>""!==e)),L=F.length-1,V=t+B||t,D=T(k,V,A);(0,s.useEffect)((()=>{N(!1),Object.keys(k).forEach((e=>{e.includes(V)&&e.includes("/*")&&N(!0)}))}),[V,n,k]);const R=(0,_._)([V,...D],A)||f||I;let P=F.map(((e,n)=>{const o="".concat(F.slice(0,n+1).join("/"),"/"),a="/browser/".concat(encodeURIComponent(t),"/").concat(o?"".concat(encodeURIComponent(o)):"");return n===L&&e===b?null:(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("span",{className:"slashSpacingStyle",children:"/"}),n===L?(0,C.jsx)("span",{style:{cursor:"default",whiteSpace:"pre"},children:(0,j.Tw)(e)}):(0,C.jsx)(v.N_,{style:{whiteSpace:"pre"},to:a,onClick:()=>{u((0,c.cQ)({status:!1,objectName:""}))},children:(0,j.Tw)(e)})]},"breadcrumbs-".concat(n.toString()))})),U=[];p&&(U=[(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("span",{children:[(0,C.jsx)("span",{className:"slashSpacingStyle",children:"/"}),b," - Versions"]})},"breadcrumbs-versionedItem")]);const z=[(0,C.jsx)(s.Fragment,{children:(0,C.jsx)(v.N_,{to:"/browser/".concat(t),onClick:()=>{u((0,c.cQ)({status:!1,objectName:""}))},children:t})},"breadcrumbs-root-path"),...P,...U];return(0,C.jsxs)(s.Fragment,{children:[(0,C.jsxs)(E,{children:[S&&(0,C.jsx)(y,{modalOpen:S,bucketName:t,folderName:n,onClose:()=>{w(!1)},limitedSubPath:I&&!((0,_._)([V,...D],A)||f)}),(0,C.jsx)(h.BIu,{sx:{whiteSpace:"pre"},goBackFunction:()=>{if(p)u((0,c.cQ)({status:!1,objectName:""}));else{if(0===F.length)return void m("/browser");const e=F.slice(0,-1);m("/browser/".concat(t).concat(e.length>0?"/".concat(encodeURIComponent("".concat(e.join("/"),"/"))):""))}},additionalOptions:(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)(g(),{text:"".concat(t,"/").concat(F.join("/")),children:(0,C.jsx)(h.$nd,{id:"copy-path",icon:(0,C.jsx)(h.TdU,{style:{width:"12px",height:"12px",fill:"#969FA8",marginTop:-1}}),variant:"regular",onClick:()=>{u((0,O.Hk)("Path copied to clipboard"))},style:{width:"28px",height:"28px",color:"#969FA8",border:"#969FA8 1px solid",marginRight:5}})}),(0,C.jsx)(h.azJ,{className:"additionalOptions",children:d})]}),children:z}),!i&&(0,C.jsx)(h.m_M,{tooltip:R?"Choose or create a new path":(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"create a new path"),children:(0,C.jsx)(h.$nd,{id:"new-path",onClick:()=>{w(!0)},disabled:!f&&(x||!R),icon:(0,C.jsx)(h.pj3,{style:{fill:"#969FA8"}}),style:{whiteSpace:"nowrap"},variant:"regular",label:"Create new path"})})]}),(0,C.jsx)(h.azJ,{sx:{display:"none",marginTop:15,marginBottom:5,justifyContent:"flex-start","& > div":{fontSize:12,fontWeight:"normal",flexDirection:"row",flexWrap:"nowrap"},["@media (max-width: ".concat(h.nmC.lg,"px)")]:{display:"flex"}},children:d})]})};var N=n(93445);const A=e=>"Enabled"===e||"Suspended"===e;var k=n(37414),B=n(39947),F=n(81708),L=n(6681);const V=e=>{let{uploadPath:t,bucketName:n,forceDisable:a=!1,uploadFileFunction:i,uploadFolderFunction:l,overrideStyles:c={}}=e;const[d,u]=(0,s.useState)(null),[m,x]=(0,s.useState)(!1),p=(0,o.d4)((e=>e.system.anonymousMode)),j=(0,o.d4)((e=>e.console.session&&e.console.session.permissions||{})),b=[r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],g=T(j,t,b),f=Boolean(d),v=()=>{u(null)},S=(0,_._)([t,...g],b)||p,O=(0,_._)([n,...g],b,!1,!0),w=S||O;return(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)(L.A,{tooltip:w?"Upload Files":(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload files to this bucket"),children:(0,C.jsx)(h.$nd,{id:"upload-main","aria-controls":"upload-main-menu","aria-haspopup":"true","aria-expanded":f?"true":void 0,onClick:e=>{x(!m),u(e.currentTarget)},label:"Upload",icon:(0,C.jsx)(h.JMY,{}),variant:"callAction",disabled:a||!w,sx:c})}),(0,C.jsx)(h.Vey,{id:"upload-main-menu",options:[{label:"Upload File",icon:(0,C.jsx)(h.JMY,{}),value:"file",disabled:!S||a},{label:"Upload Folder",icon:(0,C.jsx)(h.nDF,{}),value:"folder",disabled:!O||a}],selectedOption:"",onSelect:e=>{"folder"!==e?i(v):l(v)},hideTriggerAction:()=>{x(!1)},open:m,anchorEl:d,anchorOrigin:"end",useAnchorWidth:!0})]})},D=e=>{let{open:t,closePanel:n,className:s="",children:o}=e;return(0,C.jsxs)(h.azJ,{id:"details-panel",sx:{borderColor:"#EAEDEE",borderWidth:0,borderStyle:"solid",borderRadius:3,borderBottomLeftRadius:0,borderBottomRightRadius:0,width:0,transitionDuration:"0.3s",overflowX:"hidden",overflowY:"auto",position:"relative",opacity:0,marginLeft:-1,"&.open":{width:300,minWidth:300,borderLeftWidth:1,opacity:1},"@media (max-width: 799px)":{"&.open":{width:"100%",minWidth:"100%",borderLeftWidth:0}}},className:"".concat(t?"open":""," ").concat(s),children:[(0,C.jsx)(h.$nd,{variant:"text",id:"close-details-list",onClick:n,icon:(0,C.jsx)(h._FR,{}),sx:{position:"absolute",right:5,top:18,padding:0,height:14,"&:hover:not(:disabled)":{backgroundColor:"transparent"}}}),o]})};var R=n(48245);const P=e=>{let{icon:t,strings:n}=e;return(0,C.jsxs)(h.azJ,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:16,height:16,marginRight:4,minWidth:16,minHeight:16},"& .fileNameText":{whiteSpace:"pre",overflow:"hidden",textOverflow:"ellipsis"}},children:[t,(0,C.jsx)("span",{className:"fileNameText",children:(0,j.qf)(n[n.length-1])})]})},U=[{icon:(0,C.jsx)(h.FRZ,{}),extensions:["mp4","mov","avi","mpeg","mpg"]},{icon:(0,C.jsx)(h.jCy,{}),extensions:["mp3","m4a","aac"]},{icon:(0,C.jsx)(h.yTC,{}),extensions:["pdf"]},{icon:(0,C.jsx)(h.QvW,{}),extensions:["ppt","pptx"]},{icon:(0,C.jsx)(h.z9t,{}),extensions:["xls","xlsx"]},{icon:(0,C.jsx)(h.VSs,{}),extensions:["cer","crt","pem"]},{icon:(0,C.jsx)(h.bM2,{}),extensions:["html","xml","css","py","go","php","cpp","h","java"]},{icon:(0,C.jsx)(h.qM2,{}),extensions:["cfg","yaml"]},{icon:(0,C.jsx)(h.ITz,{}),extensions:["sql"]},{icon:(0,C.jsx)(h.PcO,{}),extensions:["ttf","otf"]},{icon:(0,C.jsx)(h.yEV,{}),extensions:["doc","docx","txt","rtf"]},{icon:(0,C.jsx)(h.j_m,{}),extensions:["zip","rar","tar","gz"]},{icon:(0,C.jsx)(h.DUd,{}),extensions:["epub","mobi","azw","azw3"]},{icon:(0,C.jsx)(h.nLN,{}),extensions:["jpeg","jpg","gif","tiff","png","heic","dng"]}],z=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e,s=(0,C.jsx)(h.KlI,{});e.endsWith("/")&&(s=(0,C.jsx)(h.kez,{}),n=e.slice(0,-1));const o=e.toLowerCase();for(const i of U)for(const e of i.extensions)o.endsWith(".".concat(e))&&(s=i.icon);!e.endsWith("/")&&e.indexOf(".")<0&&(s=(0,C.jsx)(h.YJK,{}));const a=n.split("/");return t?s:(0,C.jsx)(P,{icon:s,strings:a})};var G=n(37524);const M=e=>{let{metaData:t}=e;const n=Object.keys(t);return(0,C.jsx)(s.Fragment,{children:n.map(((e,n)=>{const s=(e=>Array.isArray(e)?e.map(j.Tw).join(", "):(0,j.Tw)(e))(t[e]);return(0,C.jsxs)(h.azJ,{sx:{marginBottom:15,fontSize:14,maxHeight:180,overflowY:"auto"},children:[(0,C.jsx)("strong",{children:e}),(0,C.jsx)("br",{}),s]},"box-meta-".concat(e,"-").concat(n.toString()))}))})};var J=n(30718),K=n(85330),W=n(77403);const H=[{value:"01",label:"January"},{value:"02",label:"February"},{value:"03",label:"March"},{value:"04",label:"April"},{value:"05",label:"May"},{value:"06",label:"June"},{value:"07",label:"July"},{value:"08",label:"August"},{value:"09",label:"September"},{value:"10",label:"October"},{value:"11",label:"November"},{value:"12",label:"December"}],Y=Array.from(Array(31),((e,t)=>({value:(t+1).toString(),label:(t+1).toString()}))),$=(new Date).getFullYear(),Z=Array.from(Array(50),((e,t)=>({value:(t+$).toString(),label:(t+$).toString()})));var q=n(94141);const Q=(0,s.forwardRef)(((e,t)=>{let{id:n,label:o,disableOptions:a=!1,tooltip:i="",borderBottom:l=!1,onDateChange:r,value:c=""}=e;(0,s.useImperativeHandle)(t,(()=>({resetDate:b})));const[d,u]=(0,s.useState)(""),[m,x]=(0,s.useState)(""),[p,j]=(0,s.useState)("");(0,s.useEffect)((()=>{if(""!==c){const e=c.split("-");j(e[0]),u(e[1]),x("".concat(parseInt(e[2])))}}),[c]),(0,s.useEffect)((()=>{const[e,t]=((e,t,n)=>{const s=Date.parse("".concat(e,"-").concat(t,"-").concat(n));if(isNaN(s))return[!1,""];const o=parseInt(t),a=parseInt(n),i=o<10?"0".concat(o):o,l=a<10?"0".concat(a):a,r=new Date(s).toISOString().split("T")[0],c="".concat(e,"-").concat(i,"-").concat(l);return[r===c,c]})(p,d,m);r(t,e)}),[d,m,p,r]);const b=()=>{u(""),x(""),j("")},g=()=>a||!1,f=[{value:"",label:""},...H],v=[{value:"",label:""},...Y],_=[{value:"",label:""},...Z];return(0,C.jsxs)(h.azJ,{className:"inputItem",children:[(0,C.jsx)(h.azJ,{sx:{display:"flex",alignItems:"center",gap:5,marginBottom:5},children:(0,C.jsxs)(h.l1Y,{htmlFor:n,children:[(0,C.jsx)("span",{children:o}),""!==i&&(0,C.jsx)(h.azJ,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,C.jsx)(h.m_M,{tooltip:i,placement:"top",children:(0,C.jsx)(h.azJ,{sx:{"& .min-icon":{width:13}},children:(0,C.jsx)(h.NTw,{})})})})]})}),(0,C.jsxs)(h.azJ,{sx:{display:"flex",gap:12},children:[(0,C.jsx)(h.l6P,{id:"".concat(n,"-month"),name:"".concat(n,"-month"),value:d,onChange:e=>{u(e)},options:f,label:"",disabled:g()}),(0,C.jsx)(h.l6P,{id:"".concat(n,"-day"),name:"".concat(n,"-day"),value:m,onChange:e=>{x(e)},options:v,label:"",disabled:g()}),(0,C.jsx)(h.l6P,{id:"".concat(n,"-year"),name:"".concat(n,"-year"),value:p,onChange:e=>{j(e)},options:_,label:"",disabled:g(),sx:{marginBottom:12}})]})]})})),X=e=>{let{open:t,closeModalAndRefresh:n,objectName:a,objectInfo:r,bucketName:c}=e;const d=(0,l.jL)(),u=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),[x,p]=(0,s.useState)(!0),[j,b]=(0,s.useState)(""),[g,f]=(0,s.useState)(""),[v,_]=(0,s.useState)(!1),[S,w]=(0,s.useState)(!1),[T,y]=(0,s.useState)(!1);(0,s.useEffect)((()=>{if(r.retention_mode&&(b((null===u||void 0===u?void 0:u.mode)||K.BT.Governance),y(!0)),r.retention_until_date){const t=new Date(r.retention_until_date);if("Invalid Date"!==t.toString()){const n=t.getFullYear(),s=(e=t.getMonth()+1)<10?"0".concat(e):"".concat(e),o=t.getDate();isNaN(o)||"NaN"===s||isNaN(n)||f("".concat(n,"-").concat(s,"-").concat(o))}y(!0)}var e}),[r,null===u||void 0===u?void 0:u.mode]);const E=(0,s.useRef)(null),I=()=>{p(!1),b(K.BT.Governance),E.current&&E.current.resetDate()},N=T&&("governance"===j||""===j);return(0,C.jsx)(q.A,{title:"Set Retention Policy",modalOpen:t,onClose:()=>{I(),n(!1)},children:(0,C.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault()})(e)},children:(0,C.jsxs)(h.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,C.jsxs)(h.azJ,{className:"inputItem",children:[(0,C.jsx)("strong",{children:"Selected Object"}),": ",a]}),N&&(0,C.jsx)(h.dOG,{value:"status",id:"status",name:"status",checked:x,onChange:e=>{p(!x)},label:"Status",indicatorLabels:["Enabled","Disabled"]}),(0,C.jsx)(h.z6M,{currentValue:j,id:"type",name:"type",label:"Type",disableOptions:!x||T&&""!==j,onChange:e=>{b(e.target.value)},selectorOptions:[{label:"Governance",value:K.BT.Governance},{label:"Compliance",value:K.BT.Compliance}]}),(0,C.jsx)(Q,{id:"date",label:"Date",disableOptions:!(x&&("governance"===j||"compliance"===j)),ref:E,value:g,borderBottom:!0,onDateChange:(e,t)=>{_(t),t&&f(e)}}),(0,C.jsxs)(h.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:[(0,C.jsx)(h.$nd,{id:"reset",type:"button",variant:"regular",onClick:I,label:"Reset"}),(0,C.jsx)(h.$nd,{id:"save",type:"submit",variant:"callAction",disabled:x&&""===j||x&&!v||S,onClick:()=>{w(!0);const e=r.name||"",t=r.version_id||null,s=x||"governance"!==j?"".concat(g,"T23:59:59Z"):"";x||"governance"!==j?((e,t,s)=>{i.F.buckets.putObjectRetention(c,{prefix:e,version_id:t||""},{expires:s,mode:j}).then((()=>{w(!1),n(!0)})).catch((e=>{d((0,O.Dy)((0,m.S)(e.error))),w(!1)}))})(e,t,s):((e,t)=>{i.F.buckets.deleteObjectRetention(c,{prefix:e,version_id:t||""}).then((()=>{w(!1),n(!0)})).catch((e=>{d((0,O.Dy)((0,m.S)(e.error))),w(!1)}))})(e,t)},label:"Save"})]})]})})})};var ee=n(58661),te=n(25448);const ne=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedBucket:a,selectedObject:i,versioningInfo:c,selectedVersion:d=""}=e;const u=(0,l.jL)(),[m,x]=(0,te.A)((()=>t(!0)),(e=>{u((0,O.C9)(e)),"Access Denied."===e.detailedError&&t(!0)})),[p,j]=(0,s.useState)(!1),[b,g]=(0,s.useState)(!1),f=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),v=(0,_._)([a],[r.OV.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===f||void 0===f?void 0:f.mode);if(!i)return null;return(0,C.jsx)(ee.A,{title:"Delete Object",confirmText:"Delete",isOpen:n,titleIcon:(0,C.jsx)(h.xWY,{}),isLoading:m,onConfirm:()=>{const e=i.endsWith("/");x("DELETE","/api/v1/buckets/".concat(encodeURIComponent(a),"/objects?prefix=").concat(encodeURIComponent(i)).concat(""!==d?"&version_id=".concat(encodeURIComponent(d)):"&recursive=".concat(e,"&all_versions=").concat(p)).concat(b?"&bypass=true":""))},onClose:()=>t(!1),confirmationContent:(0,C.jsxs)(s.Fragment,{children:["Are you sure you want to delete: ",(0,C.jsx)("br",{}),(0,C.jsx)("b",{children:i})," ",""!==d?(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("br",{}),(0,C.jsx)("br",{}),"Version ID:",(0,C.jsx)("br",{}),(0,C.jsx)("strong",{children:d})]}):"","? ",(0,C.jsx)("br",{}),(0,C.jsx)("br",{}),A(null===c||void 0===c?void 0:c.status)&&""===d&&(0,C.jsx)(s.Fragment,{children:(0,C.jsx)(h.dOG,{label:"Delete All Versions",indicatorLabels:["Yes","No"],checked:p,value:"delete_versions",id:"delete-versions",name:"delete-versions",onChange:e=>{j(!p)},description:""})}),v&&(p||""!==d)&&(0,C.jsx)(s.Fragment,{children:(0,C.jsx)("div",{style:{marginTop:10},children:(0,C.jsx)(h.dOG,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:b,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:e=>{g(!b)},description:""})})}),p&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsxs)("div",{style:{marginTop:10,border:"#c83b51 1px solid",borderRadius:3,padding:5,backgroundColor:"#c83b5120",color:"#c83b51"},children:["This will remove the object as well as all of its versions,"," ",(0,C.jsx)("br",{}),"This action is irreversible."]}),(0,C.jsx)("br",{}),"Are you sure you want to continue?"]})]})})},se=e=>{let{open:t,closeModalAndRefresh:n,objectName:o,bucketName:a,actualInfo:r}=e;const c=(0,l.jL)(),[d,x]=(0,s.useState)(!1),[p,j]=(0,s.useState)(!1),b=r.version_id;(0,s.useEffect)((()=>{const e=u()(r,"legal_hold_status","OFF");x("ON"===e)}),[r]);const g=()=>{x(!1)};return(0,C.jsx)(q.A,{title:"Set Legal Hold",modalOpen:t,onClose:()=>{g(),n(!1)},children:(0,C.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault(),j(!0),i.F.buckets.putObjectLegalHold(a,{prefix:o,version_id:b||""},{status:d?K.SW.Enabled:K.SW.Disabled}).then((()=>{j(!1),n(!0)})).catch((e=>{c((0,O.Dy)((0,m.S)(e.error))),j(!1)}))})(e)},children:(0,C.jsxs)(h.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,C.jsxs)(h.azJ,{className:"inputItem",children:[(0,C.jsx)("strong",{children:"Object"}),": ",a]}),(0,C.jsx)(h.dOG,{value:"legalhold",id:"legalhold",name:"legalhold",checked:d,onChange:e=>{x(!d)},label:"Legal Hold Status",indicatorLabels:["Enabled","Disabled"],tooltip:"To enable this feature you need to enable versioning on the bucket before creation"}),(0,C.jsxs)(h.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:[(0,C.jsx)(h.$nd,{id:"clear",type:"button",variant:"regular",onClick:g,label:"Clear"}),(0,C.jsx)(h.$nd,{id:"save",type:"submit",variant:"callAction",disabled:p,label:" Save"})]})]})})})},oe=f.Ay.b((e=>{let{theme:t}=e;return{color:u()(t,"signalColors.danger","#C83B51"),marginLeft:5}})),ae=e=>{var t;let{modalOpen:n,onCloseAndUpdate:a,bucketName:c,actualInfo:d}=e;const x=(0,l.jL)(),p=(0,o.d4)(O.Rq),[j,b]=(0,s.useState)(""),[g,f]=(0,s.useState)(""),[v,S]=(0,s.useState)(!1),[w,T]=(0,s.useState)(!1),[y,E]=(0,s.useState)(""),[I,N]=(0,s.useState)(""),A=d.tags,k=Object.keys(A||{}),B=null===(t=d.name)||void 0===t?void 0:t.split("/"),F=(null===B||void 0===B?void 0:B.pop())||"",L=e=>(0,C.jsxs)(h.azJ,{sx:{fontSize:16,margin:"20px 0 30px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",width:"100%"},children:["Tag",e?"s":""," for: ",(0,C.jsx)("strong",{children:F})]});return(0,C.jsx)(s.Fragment,{children:(0,C.jsx)(q.A,{modalOpen:n,title:w?"Delete Tag":"Edit Tags",onClose:()=>{a(!0)},iconColor:w?"delete":"default",titleIcon:w?(0,C.jsx)(h.aaC,{}):(0,C.jsx)(h.cGQ,{}),children:w?(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)(h.xA9,{container:!0,children:[L(!1),"Are you sure you want to delete the tag"," ",(0,C.jsxs)(oe,{children:[y," : ",I]})," ","?",(0,C.jsxs)(h.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:[(0,C.jsx)(h.$nd,{id:"cancel",type:"button",variant:"regular",onClick:()=>{E(""),N(""),T(!1)},label:"Cancel"}),(0,C.jsx)(h.$nd,{type:"submit",variant:"secondary",onClick:()=>{const e={...A};delete e[y];const t=p?d.version_id||"":"null";i.F.buckets.putObjectTags(c,{prefix:d.name||"",version_id:t},{tags:e}).then((()=>{a(!0),S(!1)})).catch((e=>{x((0,O.Dy)((0,m.S)(e.error))),S(!1)}))},id:"deleteTag",label:"Delete Tag"})]})]})}):(0,C.jsxs)(h.azJ,{children:[(0,C.jsx)(_.R,{scopes:[r.OV.S3_GET_OBJECT_TAGGING,r.OV.S3_GET_ACTIONS],resource:c,children:(0,C.jsxs)(h.azJ,{sx:{display:"flex",flexFlow:"column",width:"100%"},children:[L(!0),(0,C.jsxs)(h.azJ,{sx:{fontSize:14,fontWeight:"normal"},children:["Current Tags:",(0,C.jsx)("br",{}),0===k.length?(0,C.jsx)("span",{className:"muted",children:"There are no tags for this object"}):(0,C.jsx)(s.Fragment,{}),(0,C.jsx)(h.azJ,{sx:{marginTop:"5px",marginBottom:"15px"},children:k.map(((e,t)=>{const n=u()(A,"".concat(e),"");return""!==n?(0,C.jsx)(_.R,{scopes:[r.OV.S3_DELETE_OBJECT_TAGGING],resource:c,errorProps:{deleteIcon:null,onDelete:null},children:(0,C.jsx)(h.vwO,{id:"".concat(e," : ").concat(n),label:"".concat(e," : ").concat(n),variant:"regular",color:"default",onDelete:()=>{((e,t)=>{E(e),N(t),T(!0)})(e,n)}})},"chip-".concat(t)):null}))})]})]})}),(0,C.jsx)(_.R,{scopes:[r.OV.S3_PUT_OBJECT_TAGGING,r.OV.S3_PUT_ACTIONS],resource:c,errorProps:{disabled:!0,onClick:null},children:(0,C.jsxs)(h.azJ,{children:[(0,C.jsx)(h._xt,{icon:(0,C.jsx)(h.b_$,{}),separator:!1,children:"Add New Tag"}),(0,C.jsxs)(h.Hbc,{containerPadding:!1,withBorders:!1,children:[(0,C.jsx)(h.cl_,{value:j,label:"Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter Tag Key",onChange:e=>{b(e.target.value)}}),(0,C.jsx)(h.cl_,{value:g,label:"Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter Tag Label",onChange:e=>{f(e.target.value)}}),(0,C.jsxs)(h.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:[(0,C.jsx)(h.$nd,{id:"clear",type:"button",variant:"regular",color:"primary",onClick:()=>{f(""),b("")},label:"Clear"}),(0,C.jsx)(h.$nd,{type:"submit",variant:"callAction",disabled:""===g.trim()||""===j.trim()||v,onClick:()=>{S(!0);const e={};e[j]=g;const t={...A,...e},n=p?d.version_id||"":"null";i.F.buckets.putObjectTags(c,{prefix:d.name||"",version_id:n},{tags:t}).then((()=>{a(!0),S(!1)})).catch((e=>{x((0,O.Dy)((0,m.S)(e.error))),S(!1)}))},id:"saveTag",label:"Save"})]})]})]})})]})})})};var ie=n(49501);const le=e=>{let{closeInspectModalAndRefresh:t,inspectOpen:n,inspectPath:o,volumeName:a}=e;const i=(0,l.jL)(),r=()=>t(!1),[c,d]=(0,s.useState)(!0),[u,m]=(0,s.useState)(""),[x,p]=(0,s.useState)("");if(!o)return null;return(0,C.jsxs)(s.Fragment,{children:[!u&&(0,C.jsx)(q.A,{modalOpen:n,titleIcon:(0,C.jsx)(h.nTF,{}),title:"Inspect Object",onClose:r,children:(0,C.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault()})(e)},children:["Would you like to encrypt ",(0,C.jsx)("b",{children:o}),"? ",(0,C.jsx)("br",{}),(0,C.jsx)(h.dOG,{label:"Encrypt",indicatorLabels:["Yes","No"],checked:c,value:"encrypt",id:"encrypt",name:"encrypt",onChange:e=>{d(!c)},description:""}),(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:(0,C.jsx)(h.$nd,{id:"inspect",type:"submit",variant:"callAction",color:"primary",onClick:async()=>{let e=document.baseURI.replace(window.location.origin,"");(async e=>await fetch(e,{method:"GET"}))("".concat(window.location.origin).concat(e,"/api/v1/admin/inspect?volume=").concat(encodeURIComponent(a),"&file=").concat(encodeURIComponent(o+"/xl.meta"),"&encrypt=").concat(c)).then((async e=>{if(!e.ok){const t=await e.json();i((0,O.C9)({errorMessage:t.message,detailedError:t.code}))}const t=await e.blob(),n=e.headers.get("content-disposition").split('"')[1],s=(0,j.UM)(n)||"";(0,j.OT)(t,n),p(n),""!==s?m(s):r()})).catch((e=>{i((0,O.C9)(e))}))},label:"Inspect"})})]})}),u?(0,C.jsxs)(q.A,{modalOpen:n,title:"Inspect Decryption Key",onClose:()=>{(0,j.Yj)(x),r(),m("")},titleIcon:(0,C.jsx)(h.aJN,{}),children:[(0,C.jsxs)(h.azJ,{children:["This will be displayed only once. It cannot be recovered.",(0,C.jsx)("br",{}),"Use secure medium to share this key."]}),(0,C.jsx)(h.azJ,{children:(0,C.jsx)(ie.A,{value:u})})]}):null]})},re=e=>{let{open:t,closeModal:n,currentItem:o,internalPaths:a,actualInfo:i,bucketName:r}=e;const c=(0,l.jL)(),[d,u]=(0,s.useState)(o),[m,x]=(0,s.useState)(!1);return(0,C.jsxs)(q.A,{title:"Rename Download",modalOpen:t,onClose:n,titleIcon:(0,C.jsx)(h.qUP,{}),children:[(0,C.jsxs)("div",{children:["The file you are trying to download has a long name.",(0,C.jsx)("br",{}),"This can cause issues on Windows Systems by trimming the file name after download.",(0,C.jsx)("br",{}),(0,C.jsx)("br",{})," We recommend to rename the file download"]}),(0,C.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{e.preventDefault(),(0,R._)(c,r,a,i),n()})(e)},children:(0,C.jsxs)(h.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,C.jsx)(h.cl_,{id:"download-filename",name:"download-filename",onChange:e=>{u(e.target.value)},label:"",type:"text",value:d,error:d.length>200&&!m?"Filename should be less than 200 characters long.":""}),(0,C.jsx)(h.dOG,{value:"acceptLongName",id:"acceptLongName",name:"acceptLongName",checked:m,onChange:e=>{x(e.target.checked),e.target.checked&&u(o)},label:"Use Original Name"}),(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:W.Uz.modalButtonBar,children:(0,C.jsx)(h.$nd,{id:"download-file",type:"submit",variant:"callAction",color:"primary",disabled:d.length>200&&!m,label:"Download File"})})]})})]})},ce={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:0,tags:{},version_id:void 0},de=e=>{let{internalPaths:t,bucketName:n,versioningInfo:a,locking:d,onClosePanel:m}=e;const x=(0,l.jL)(),p=(0,o.d4)(O.Rq),b=(0,o.d4)((e=>e.objectBrowser.versionsMode)),g=(0,o.d4)((e=>e.objectBrowser.selectedVersion)),f=(0,o.d4)((e=>e.objectBrowser.loadingObjectInfo)),[v,S]=(0,s.useState)(!1),[w,T]=(0,s.useState)(!1),[y,E]=(0,s.useState)(!1),[I,A]=(0,s.useState)(!1),[k,B]=(0,s.useState)(!1),[F,V]=(0,s.useState)(null),[D,P]=(0,s.useState)([]),[U,K]=(0,s.useState)(null),[W,H]=(0,s.useState)([]),[Y,$]=(0,s.useState)(!1),[Z,q]=(0,s.useState)(!1),[Q,ee]=(0,s.useState)(0),[te,oe]=(0,s.useState)(!1),[ie,de]=(0,s.useState)(null),[ue,he]=(0,s.useState)(!1),me=(t||"").split("/").pop()||"";let xe=[];F&&F.name&&(xe=F.name.split("/")),(0,s.useEffect)((()=>{if(p&&D&&D.length>=1){let e=D.find((e=>e.is_latest))||ce;""!==g&&(e=D.find((e=>e.version_id===g))||ce),e.is_delete_marker||he(!0),V(e)}}),[g,p,D]),(0,s.useEffect)((()=>{f&&""!==t&&i.F.buckets.listObjects(n,{prefix:t,with_versions:p}).then((e=>{const t=e.data.objects||[];if(p){P(t),H(t);const e=t.reduce(((e,t)=>null!==t&&void 0!==t&&t.size?e+t.size:e),0);ee(e)}else{const e=t[0];V(e),H([]),e.is_delete_marker||he(!0)}x((0,c.oe)(!1))})).catch((e=>{console.error("Error loading object details",e.error),x((0,c.oe)(!1))}))}),[f,n,t,x,p,g]),(0,s.useEffect)((()=>{ue&&""!==t&&i.F.buckets.getObjectMetadata(n,{prefix:t,versionID:(null===F||void 0===F?void 0:F.version_id)||""}).then((e=>{let t=u()(e.data,"objectMetadata",{});de(t),he(!1)})).catch((e=>{console.error("Error Getting Metadata Status: ",e.detailedError),he(!1)}))}),[n,t,ue,null===F||void 0===F?void 0:F.version_id]);let pe=[];F&&F.tags&&(pe=Object.keys(F.tags));const je=(0,C.jsx)("div",{style:{textAlign:"center",marginTop:35},children:(0,C.jsx)(h.aHM,{})});if(!F)return f?je:null;const be=xe.length>0?xe[xe.length-1]:F.name,ge=[n,me,[n,F.name].join("/")],fe=(0,_._)(n,[r.OV.S3_PUT_OBJECT_LEGAL_HOLD,r.OV.S3_PUT_ACTIONS]),ve=(0,_._)(ge,[r.OV.S3_PUT_OBJECT_TAGGING,r.OV.S3_PUT_ACTIONS]),_e=(0,_._)(ge,[r.OV.S3_GET_OBJECT_RETENTION,r.OV.S3_PUT_OBJECT_RETENTION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],!0),Se=(0,_._)(ge,[r.OV.ADMIN_INSPECT_DATA]),Oe=(0,_._)(ge,[r.OV.S3_GET_BUCKET_VERSIONING,r.OV.S3_PUT_BUCKET_VERSIONING,r.OV.S3_GET_OBJECT_VERSION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS]),we=(0,_._)(ge,[r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS]),Te=(0,_._)([n,me,[n,F.name].join("/")],[r.OV.S3_DELETE_OBJECT]);let Ce=(0,N.IZ)(ie,me);const ye=[{action:()=>{(0,R._)(x,n,t,F)},label:"Download",disabled:!!F.is_delete_marker||!we,icon:(0,C.jsx)(h.s3U,{}),tooltip:we?"Download this Object":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"download this object")},{action:()=>{S(!0)},label:"Share",disabled:!!F.is_delete_marker||!we,icon:(0,C.jsx)(h.liv,{}),tooltip:we?"Share this File":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"share this object")},{action:()=>{q(!0)},label:"Preview",disabled:!!F.is_delete_marker||"none"===Ce&&!we,icon:(0,C.jsx)(h.cyn,{}),tooltip:we?"Preview this File":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"preview this object")},{action:()=>{A(!0)},label:"Legal Hold",disabled:!d||!p||!!F.is_delete_marker||!fe||""!==g,icon:(0,C.jsx)(h.ODz,{}),tooltip:fe?d?"Change Legal Hold rules for this File":"Object Locking must be enabled on this bucket in order to set Legal Hold":(0,r.vj)([r.OV.S3_PUT_OBJECT_LEGAL_HOLD,r.OV.S3_PUT_ACTIONS],"change legal hold settings for this object")},{action:()=>{T(!0)},label:"Retention",disabled:!p||!!F.is_delete_marker||!_e||""!==g||!d,icon:(0,C.jsx)(h.gn6,{}),tooltip:_e?d?"Change Retention rules for this File":"Object Locking must be enabled on this bucket in order to set Retention Rules":(0,r.vj)([r.OV.S3_GET_OBJECT_RETENTION,r.OV.S3_PUT_OBJECT_RETENTION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],"change Retention Rules for this object")},{action:()=>{E(!0)},label:"Tags",disabled:!!F.is_delete_marker||""!==g||!ve,icon:(0,C.jsx)(h.P3Z,{}),tooltip:ve?"Change Tags for this File":(0,r.vj)([r.OV.S3_PUT_OBJECT_TAGGING,r.OV.S3_GET_OBJECT_TAGGING,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],"set Tags on this object")},{action:()=>{B(!0)},label:"Inspect",disabled:!p||!!F.is_delete_marker||""!==g||!Se,icon:(0,C.jsx)(h.nTF,{}),tooltip:Se?"Inspect this file":(0,r.vj)([r.OV.ADMIN_INSPECT_DATA],"inspect this file")},{action:()=>{x((0,c.cQ)({status:!b,objectName:be}))},label:b?"Hide Object Versions":"Display Object Versions",icon:(0,C.jsx)(h.j1U,{}),disabled:!p||!(F.version_id&&"null"!==F.version_id)||!Oe,tooltip:Oe?F.version_id&&"null"!==F.version_id?"Display Versions for this file":"":(0,r.vj)([r.OV.S3_GET_BUCKET_VERSIONING,r.OV.S3_PUT_BUCKET_VERSIONING,r.OV.S3_GET_OBJECT_VERSION,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS],"display all versions of this object")}];return(0,C.jsxs)(s.Fragment,{children:[v&&F&&(0,C.jsx)(J.default,{open:v,closeModalAndRefresh:()=>{K(null),S(!1)},bucketName:n,dataObject:U||F}),w&&F&&(0,C.jsx)(X,{open:w,closeModalAndRefresh:e=>{T(!1),e&&x((0,c.oe)(!0))},objectName:me,objectInfo:F,bucketName:n}),Y&&(0,C.jsx)(ne,{deleteOpen:Y,selectedBucket:n,selectedObject:t,closeDeleteModalAndRefresh:e=>{$(!1),e&&""===g?m(!0):(x((0,c.SK)(!0)),x((0,c.Ai)("")),x((0,c.oe)(!0)))},versioningInfo:p?a:void 0,selectedVersion:g}),I&&F&&(0,C.jsx)(se,{open:I,closeModalAndRefresh:e=>{A(!1),e&&x((0,c.oe)(!0))},objectName:F.name||"",bucketName:n,actualInfo:F}),Z&&F&&(0,C.jsx)(G.default,{open:Z,bucketName:n,actualInfo:F,onClosePreview:()=>{q(!1)}}),y&&F&&(0,C.jsx)(ae,{modalOpen:y,bucketName:n,actualInfo:F,onCloseAndUpdate:e=>{E(!1),e&&x((0,c.oe)(!0))}}),k&&F&&(0,C.jsx)(le,{inspectOpen:k,volumeName:n,inspectPath:F.name||"",closeInspectModalAndRefresh:e=>{B(!1),e&&x((0,c.oe)(!0))}}),te&&F&&(0,C.jsx)(re,{open:te,closeModal:()=>{oe(!1)},currentItem:me,bucketName:n,internalPaths:t,actualInfo:F}),f?(0,C.jsx)(s.Fragment,{children:je}):(0,C.jsxs)(h.azJ,{sx:{"& .ObjectDetailsTitle":{display:"flex",alignItems:"center","& .min-icon":{width:26,height:26,minWidth:26,minHeight:26}},"& .objectNameContainer":{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",alignItems:"center",marginLeft:10},"& .capitalizeFirst":{textTransform:"capitalize"},"& .detailContainer":{padding:"0 22px",marginBottom:10,fontSize:14}},children:[(0,C.jsx)(h.Smc,{title:(0,C.jsxs)("div",{className:"ObjectDetailsTitle",children:[z(be||"",!0),(0,C.jsx)("span",{className:"objectNameContainer",children:be})]}),items:ye}),(0,C.jsx)(L.A,{tooltip:Te?"":(0,r.vj)([r.OV.S3_DELETE_OBJECT],"delete this object"),children:(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:{justifyContent:"center",display:"flex"},children:(0,C.jsx)(_.R,{resource:[n,me,[n,F.name].join("/")],scopes:[r.OV.S3_DELETE_OBJECT],errorProps:{disabled:!0},children:(0,C.jsx)(h.$nd,{id:"delete-element-click",icon:(0,C.jsx)(h.d7y,{}),iconLocation:"start",fullWidth:!0,variant:"secondary",onClick:()=>{$(!0)},disabled:""===g&&F.is_delete_marker,sx:{width:"calc(100% - 44px)",margin:"8px 0"},label:"Delete".concat(""!==g?" version":"")})})})}),(0,C.jsx)(h.kCK,{icon:(0,C.jsx)(h.Hch,{}),label:"Object Info"}),(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Name:"}),(0,C.jsx)("br",{}),(0,C.jsx)("div",{style:{overflowWrap:"break-word"},children:be})]}),""!==g&&(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Version ID:"}),(0,C.jsx)("br",{}),g]}),(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Size:"}),(0,C.jsx)("br",{}),(0,j.nO)("".concat(F.size||"0"))]}),F.version_id&&"null"!==F.version_id&&""===g&&(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Versions:"}),(0,C.jsx)("br",{}),W.length," version",1!==W.length?"s":"",","," ",(0,j.qO)(Q)]}),""===g&&(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Last Modified:"}),(0,C.jsx)("br",{}),(e=>{const t=new Date,n=new Date(e),s=t.getTime()-n.getTime(),o=(0,j.eQ)(s,"ms");return""!==o.trim()?"".concat(o," ago"):"Just now"})(F.last_modified||"")]}),(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"ETAG:"}),(0,C.jsx)("br",{}),F.etag||"N/A"]}),(0,C.jsxs)(h.azJ,{className:"detailContainer",children:[(0,C.jsx)("strong",{children:"Tags:"}),(0,C.jsx)("br",{}),0===pe.length?"N/A":pe.map(((e,t)=>(0,C.jsxs)("span",{children:[e,":",u()(F,"tags.".concat(e),""),t{let{versionToRestore:t,bucketName:n,objectPath:o,restoreOpen:a,onCloseAndUpdate:r}=e;const d=(0,l.jL)(),[u,x]=(0,s.useState)(!1);return(0,C.jsx)(ee.A,{title:"Restore File Version",confirmText:"Restore",isOpen:a,isLoading:u,titleIcon:(0,C.jsx)(h.YkU,{}),onConfirm:()=>{x(!0),i.F.buckets.putObjectRestore(n,{prefix:o,version_id:t.version_id||""}).then((()=>{x(!1),r(!0),d((0,c.NV)({prefix:o,objectInfo:t}))})).catch((e=>{d((0,O.C9)((0,m.S)(e.error))),x(!1)}))},confirmButtonProps:{variant:"secondary",disabled:u},onClose:()=>{r(!1)},confirmationContent:(0,C.jsxs)(h.azJ,{id:"alert-dialog-description",children:["Are you sure you want to restore ",(0,C.jsx)("br",{}),(0,C.jsx)("b",{children:o})," ",(0,C.jsx)("br",{})," with Version ID:",(0,C.jsx)("br",{}),(0,C.jsx)("b",{children:t.version_id}),"?"]})})},he=e=>{let{type:t}=e,n="#000",s="";switch(t){case"null":n="#07193E",s="NULL VERSION";break;case"deleted":n="#868686",s="DELETED";break;default:n="#174551",s="CURRENT VERSION"}return(0,C.jsx)("span",{style:{backgroundColor:n,padding:"0 5px",display:"inline-block",color:"#FFF",fontWeight:"bold",fontSize:12,borderRadius:2,whiteSpace:"nowrap",margin:"0 10px"},children:s})},me=f.Ay.div((e=>{let{theme:t}=e;return{"&:before":{content:"' '",display:"block",position:"absolute",width:"2px",height:"calc(100% + 2px)",backgroundColor:u()(t,"borderColor","#F8F8F8"),left:"24px"},"& .mainFileVersionItem":{borderBottom:"".concat(u()(t,"borderColor","#F8F8F8")," 1px solid"),padding:"1rem 0",margin:"0 0.5rem 0 2.5rem",cursor:"pointer","&.deleted":{color:"#868686"}},"& .intermediateLayer":{margin:"0 1.5rem 0 1.5rem","&:hover, &.selected":{backgroundColor:u()(t,"boxBackground","#F8F8F8"),"& > div":{borderBottomColor:u()(t,"boxBackground","#F8F8F8")}}},"& .versionContainer":{fontSize:16,fontWeight:"bold",display:"flex",alignItems:"center","& svg.min-icon":{width:18,height:18,minWidth:18,minHeight:18,marginRight:10}},"& .buttonContainer":{textAlign:"right","& button":{marginLeft:"1.5rem"}},"& .versionID":{fontSize:"12px",margin:"2px 0",whiteSpace:"nowrap",textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden"},"& .versionData":{marginRight:"10px",fontSize:12,color:"#868686"},"@media (max-width: 600px)":{"& .buttonContainer":{"& button":{marginLeft:"5px"}}},"@media (max-width: 799px)":{"&:before":{display:"none"},"& .mainFileVersionItem":{padding:"5px 0px",margin:0},"& .intermediateLayer":{margin:0,"&:hover, &.selected":{backgroundColor:"transparent","& > div":{borderBottomColor:u()(t,"boxBackground","#F8F8F8")}}},"& .versionContainer":{fontSize:14,"& svg.min-icon":{display:"none"}},"& .versionData":{textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden",whiteSpace:"nowrap"},"& .collapsableInfo":{display:"flex",flexDirection:"column"},"& .versionItem":{display:"none"}}}})),xe=e=>{let{fileName:t,versionInfo:n,isSelected:s,checkable:o,isChecked:a,onCheck:i,onShare:l,onDownload:r,onRestore:c,onPreview:d,globalClick:u,index:m,key:x,style:b}=e;const g=n.is_delete_marker,f=[{icon:(0,C.jsx)(h.cyn,{}),action:d,tooltip:"Preview"},{icon:(0,C.jsx)(h.s3U,{}),action:r,tooltip:"Download this version"},{icon:(0,C.jsx)(h.liv,{}),action:l,tooltip:"Share this version"},{icon:(0,C.jsx)(h.YkU,{}),action:c,tooltip:"Restore this version"}];let v=null;n.is_delete_marker?v="deleted":n.is_latest?v="current":"null"===n.version_id&&(v="null");let _=p.c9.now();return n.last_modified&&(_=p.c9.fromISO(n.last_modified)),(0,C.jsx)(me,{children:(0,C.jsx)(h.xA9,{container:!0,className:"ctrItem",onClick:()=>{u(n)},style:b,children:(0,C.jsx)(h.xA9,{item:!0,xs:12,className:"intermediateLayer".concat(" ",s?"selected":""),children:(0,C.jsxs)(h.xA9,{item:!0,xs:!0,className:"mainFileVersionItem ".concat(n.is_delete_marker?"deleted":""),children:[(0,C.jsx)(h.xA9,{item:!0,xs:12,children:(0,C.jsxs)(h.xA9,{container:!0,children:[(0,C.jsxs)(h.xA9,{item:!0,xs:!0,md:4,className:"versionContainer",children:[o&&(0,C.jsx)(h.Sc0,{checked:a,id:"select-".concat(n.version_id),name:"select-".concat(n.version_id),onChange:e=>{e.stopPropagation(),i(n.version_id||"")},value:n.version_id||"",disabled:n.is_delete_marker,sx:{width:"initial"}}),z(t,!0)," v",m.toString(),(0,C.jsx)("span",{className:"versionItem",children:v&&(0,C.jsx)(he,{type:v})})]}),(0,C.jsx)(h.xA9,{item:!0,xs:10,md:8,className:"buttonContainer",children:f.map(((e,t)=>(0,C.jsx)(h.m_M,{tooltip:e.tooltip,children:(0,C.jsx)(h.K0,{size:"small",id:"version-action-".concat(e.tooltip,"-").concat(t.toString()),className:"spacing".concat(" ",g?"buttonDisabled":""),disabled:g,onClick:t=>{t.stopPropagation(),g?t.preventDefault():e.action(n)},sx:{backgroundColor:"#F8F8F8",borderRadius:"100%",width:"28px",height:"28px",padding:"5px","& .min-icon":{width:"14px",height:"14px"}},children:e.icon})},"version-action-".concat(e.tooltip,"-").concat(t.toString()))))})]})}),(0,C.jsx)(h.xA9,{item:!0,xs:12,className:"versionID",children:"null"!==n.version_id?n.version_id:"-"}),(0,C.jsxs)(h.xA9,{item:!0,xs:12,className:"collapsableInfo",children:[(0,C.jsxs)("span",{className:"versionData",children:[(0,C.jsx)("strong",{children:"Last modified:"})," ",_.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)")]}),(0,C.jsxs)("span",{className:"versionData",children:[(0,C.jsx)("strong",{children:"Size:"})," ",(0,j.nO)("".concat(n.size||"0"))]})]})]})})},x)})},pe=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedBucket:a,selectedObject:c}=e;const d=(0,l.jL)(),[u,x]=(0,s.useState)(!1),[p,j]=(0,s.useState)(""),[b,g]=(0,s.useState)(!1),f=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),v=(0,_._)([a],[r.OV.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===f||void 0===f?void 0:f.mode);if((0,s.useEffect)((()=>{u&&i.F.buckets.deleteObject(a,{prefix:c,non_current_versions:!0,bypass:b}).then((()=>{t(!0)})).catch((e=>{d((0,O.C9)((0,m.S)(e.error))),x(!1)}))}),[u,t,d,c,a,b]),!c)return null;return(0,C.jsx)(ee.A,{title:"Delete Non-Current versions",confirmText:"Delete",isOpen:n,titleIcon:(0,C.jsx)(h.xWY,{}),isLoading:u,onConfirm:()=>{x(!0)},onClose:()=>t(!1),confirmButtonProps:{disabled:"YES, PROCEED"!==p||u},confirmationContent:(0,C.jsxs)(s.Fragment,{children:["Are you sure you want to delete all the non-current versions for:"," ",(0,C.jsx)("b",{children:c}),"? ",(0,C.jsx)("br",{}),v&&(0,C.jsx)(s.Fragment,{children:(0,C.jsx)("div",{style:{marginTop:10},children:(0,C.jsx)(h.dOG,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:b,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:e=>{g(!b)},description:""})})}),(0,C.jsx)("br",{}),"To continue please type ",(0,C.jsx)("b",{children:"YES, PROCEED"})," in the box.",(0,C.jsx)("br",{}),(0,C.jsx)("br",{}),(0,C.jsx)(h.xA9,{item:!0,xs:12,children:(0,C.jsx)(h.cl_,{id:"type-confirm",name:"retype-tenant",onChange:e=>{j(e.target.value)},label:"",value:p})})]})})},je=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedBucket:a,selectedVersions:c,selectedObject:d}=e;const u=(0,l.jL)(),[x,p]=(0,s.useState)(!1),[j,b]=(0,s.useState)(!1),g=(0,o.d4)((e=>e.objectBrowser.retentionConfig)),f=(0,_._)([a],[r.OV.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===g||void 0===g?void 0:g.mode);return(0,s.useEffect)((()=>{if(x){const e=c.map((e=>({path:d,versionID:e,recursive:!1})));e.length>0&&i.F.buckets.deleteMultipleObjects(a,e,{all_versions:!1,bypass:j}).then((()=>{p(!1),t(!0)})).catch((e=>{u((0,O.C9)((0,m.S)(e.error))),p(!1)}))}}),[x,t,a,d,c,j,u]),c?(0,C.jsx)(ee.A,{title:"Delete Selected Versions",confirmText:"Delete",isOpen:n,titleIcon:(0,C.jsx)(h.xWY,{}),isLoading:x,onConfirm:()=>{p(!0)},onClose:()=>t(!1),confirmationContent:(0,C.jsxs)(s.Fragment,{children:["Are you sure you want to delete the selected ",c.length," ","versions for ",(0,C.jsx)("strong",{children:d}),"?",f&&(0,C.jsx)(s.Fragment,{children:(0,C.jsx)("div",{style:{marginTop:10},children:(0,C.jsx)(h.dOG,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:j,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:e=>{b(!j)},description:""})})})]})}):null};var be=n(95098);const ge={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:0,tags:{},version_id:void 0},fe=e=>{let{internalPaths:t,bucketName:n}=e;const a=(0,l.jL)(),r=(0,o.d4)((e=>e.objectBrowser.searchVersions)),d=(0,o.d4)((e=>e.objectBrowser.loadingVersions)),x=(0,o.d4)((e=>e.objectBrowser.selectedVersion)),p=(0,o.d4)(O.Rq),[b,g]=(0,s.useState)(!1),[f,v]=(0,s.useState)(null),[_,S]=(0,s.useState)(null),[w,T]=(0,s.useState)([]),[y,E]=(0,s.useState)(!1),[N,A]=(0,s.useState)(null),[k,B]=(0,s.useState)("date"),[F,V]=(0,s.useState)(!1),[D,P]=(0,s.useState)(!1),[U,z]=(0,s.useState)(!1),[M,K]=(0,s.useState)([]),[W,H]=(0,s.useState)(!1);let Y=[];f&&f.name&&(Y=f.name.split("/")),(0,s.useEffect)((()=>{d||f||a((0,c.SK)(!0))}),[d,f,a]),(0,s.useEffect)((()=>{d&&""!==t&&i.F.buckets.listObjects(n,{prefix:t,with_versions:p}).then((e=>{const n=u()(e.data,"objects",[]).filter((e=>e.name===t));p?(v(n.find((e=>e.is_latest))||ge),T(n)):(v(n[0]),T([])),a((0,c.SK)(!1))})).catch((e=>{a((0,O.C9)((0,m.S)(e.error))),a((0,c.SK)(!1))}))}),[d,n,t,a,p]);const $=e=>{S(e),g(!0)},Z=e=>{S(e),V(!0)},q=e=>{A(e),E(!0)},Q=e=>{(0,R._)(a,n,t,e)},X=e=>{a((0,c.Ai)(e.version_id||""))},ee=w.filter((e=>!!e.version_id&&e.version_id.includes(r))),te=w.reduce(((e,t)=>t.size?e+t.size:e),0);ee.sort(((e,t)=>{if("size"===k)return e.size&&t.size?e.sizet.size?1:0:0;{const n=new Date(e.last_modified||"").getTime(),s=new Date(t.last_modified||"").getTime();return ns?-1:0}}));const ne=e=>{if(M.includes(e)){const t=M.filter((t=>t!==e));return void K(t)}const t=[...M];t.push(e),K(t)};return(0,C.jsxs)(s.Fragment,{children:[b&&f&&(0,C.jsx)(J.default,{open:b,closeModalAndRefresh:()=>{S(null),g(!1),V(!1)},bucketName:n,dataObject:_||f}),y&&f&&N&&(0,C.jsx)(ue,{restoreOpen:y,bucketName:n,versionToRestore:N,objectPath:f.name||"",onCloseAndUpdate:e=>{E(!1),A(null),e&&(a((0,c.SK)(!0)),a((0,c.oe)(!0)))}}),F&&f&&(0,C.jsx)(G.default,{open:F,bucketName:n,actualInfo:{name:f.name||"",version_id:_&&_.version_id?_.version_id:"null",size:_&&_.size?_.size:0,content_type:"",last_modified:f.last_modified||""},onClosePreview:()=>{V(!1)}}),D&&(0,C.jsx)(pe,{deleteOpen:D,closeDeleteModalAndRefresh:e=>{P(!1),e&&(a((0,c.SK)(!0)),a((0,c.Ai)("")),a((0,c.oe)(!0)))},selectedBucket:n,selectedObject:t}),W&&(0,C.jsx)(je,{selectedBucket:n,selectedObject:t,deleteOpen:W,selectedVersions:M,closeDeleteModalAndRefresh:e=>{H(!1),e&&(a((0,c.SK)(!0)),a((0,c.Ai)("")),a((0,c.oe)(!0)),K([]))}}),(0,C.jsxs)(h.xA9,{container:!0,sx:{width:"100%",padding:10,"@media (max-width: 799px)":{minHeight:800}},children:[!f&&(0,C.jsx)(h.xA9,{item:!0,xs:12,children:(0,C.jsx)(h.z21,{})}),f&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)(h.xA9,{item:!0,xs:12,children:(0,C.jsx)(I,{bucketName:n,internalPaths:t,hidePathButton:!0})}),(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:{position:"relative","& .detailsSpacer":{marginRight:18,"@media (max-width: 600px)":{marginRight:0}},["@media (max-width: ".concat(h.nmC.md,"px)")]:{"&::before":{display:"none"}}},children:(0,C.jsx)(h.lcx,{icon:(0,C.jsx)("span",{style:{display:"block",marginTop:"-10px"},children:(0,C.jsx)(h.j1U,{style:{width:20,height:20}})}),title:"".concat(Y.length>0?Y[Y.length-1]:f.name," Versions"),subTitle:(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("span",{className:"detailsSpacer",children:(0,C.jsxs)("strong",{children:[w.length," Version",1===w.length?"":"s","\xa0\xa0\xa0"]})}),(0,C.jsx)("span",{className:"detailsSpacer",children:(0,C.jsx)("strong",{children:(0,j.qO)(te)})})]}),actions:(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)(L.A,{tooltip:"Select Multiple Versions",children:(0,C.jsx)(h.$nd,{id:"select-multiple-versions",onClick:()=>{z(!U)},icon:(0,C.jsx)(h.IN,{}),variant:U?"callAction":"regular",style:{marginRight:8}})}),U&&(0,C.jsx)(L.A,{tooltip:"Delete Selected Versions",children:(0,C.jsx)(h.$nd,{id:"delete-multiple-versions",onClick:()=>{H(!0)},icon:(0,C.jsx)(h.d7y,{}),variant:"secondary",style:{marginRight:8},disabled:0===M.length})}),(0,C.jsx)(L.A,{tooltip:"Delete Non Current Versions",children:(0,C.jsx)(h.$nd,{id:"delete-non-current",onClick:()=>{P(!0)},icon:(0,C.jsx)(h.rgY,{}),variant:"secondary",style:{marginRight:15},disabled:w.length<=1})}),(0,C.jsx)(h.l6P,{id:"sort-by",options:[{label:"Date",value:"date"},{label:"Size",value:"size"}],value:k,label:"Sort by",onChange:e=>{B(e)},noLabelMinWidth:!0})]}),bottomBorder:!1})}),(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:{flexGrow:1,height:"calc(100% - 120px)",overflow:"auto",["@media (max-width: ".concat(h.nmC.md,"px)")]:{height:600}},children:f.version_id&&"null"!==f.version_id&&(0,C.jsx)(be.B8,{style:{width:"100%"},containerStyle:{width:"100%",maxWidth:"100%"},width:1,height:800,rowCount:ee.length,rowHeight:108,rowRenderer:e=>{let{key:t,index:n,isScrolling:s,isVisible:o,style:a}=e;const i=w.length-n;return(0,C.jsx)(xe,{style:a,fileName:(null===f||void 0===f?void 0:f.name)||"",versionInfo:ee[n],index:i,onDownload:Q,onRestore:q,onShare:$,onPreview:Z,globalClick:X,isSelected:x===ee[n].version_id,checkable:U,onCheck:ne,isChecked:M.includes(ee[n].version_id||"")},t)}})})]})]})]})},ve=e=>{if(e.name.endsWith("/"))return"";const t=p.c9.now(),n=p.c9.fromISO(e.last_modified);return t.hasSame(n,"day")&&t.hasSame(n,"month")&&t.hasSame(n,"year")?"Today, ".concat(n.toFormat("HH:mm")):n.toFormat("ccc, LLL dd yyyy HH:mm (ZZZZ)")},_e=e=>e.name.endsWith("/")||!e.size?"-":(0,j.nO)(String(e.size)),Se=[{label:"Name",elementKey:"name",renderFunction:z,enableSort:!0},{label:"Last Modified",elementKey:"last_modified",renderFunction:ve,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:_e,renderFullObject:!0,width:100,enableSort:!0}],Oe=[{label:"Name",elementKey:"name",renderFunction:z,enableSort:!0},{label:"Object Date",elementKey:"last_modified",renderFunction:ve,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:_e,renderFullObject:!0,width:100,enableSort:!0},{label:"Deleted",elementKey:"delete_flag",renderFunction:e=>e?"Yes":"No",width:60}];var we=n(46537);const Te=()=>{const e=(0,l.jL)(),t=(0,a.g)(),n=(0,a.Zp)(),[i,d]=(0,s.useState)("ASC"),[m,x]=(0,s.useState)("name"),p=t.bucketName||"",j=(0,o.d4)((e=>e.objectBrowser.objectDetailsOpen)),b=(0,o.d4)((e=>e.objectBrowser.requestInProgress)),g=(0,o.d4)(we.s$),f=!(null===g||void 0===g||!g.includes("object-browser-only")),v=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),S=(0,o.d4)((e=>e.objectBrowser.records)),O=(0,o.d4)((e=>e.objectBrowser.searchObjects)),w=(0,o.d4)((e=>e.objectBrowser.selectedObjects)),T=(0,o.d4)((e=>e.objectBrowser.connectionError)),y=(0,o.d4)((e=>e.system.anonymousMode)),E=(0,_._)(p,[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET]),I=S.filter((e=>{if(""===O)return!0;return e.name.toLowerCase().indexOf(O.toLowerCase())>=0})).sort((0,N.$w)(m));let A=[];A="ASC"===i?I:I.reverse();const k=[{type:"view",tooltip:"View",onClick:t=>{var s;const o=t.name||"",a="/browser/".concat(encodeURIComponent(p)).concat(o?"/".concat(encodeURIComponent(o)):"");!y||null!==(s=t.name)&&void 0!==s&&s.endsWith("/")?(e((0,c.KX)([])),n(a),y||(e((0,c.TO)(!0)),e((0,c.SK)(!0))),e((0,c.A7)(o))):(0,R._)(e,p,o,t)},sendOnlyId:!1}];let B=E||y?"This location is empty".concat(v?"":", please try uploading a new file"):(0,r.vj)([r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],"view Objects in this bucket");T&&(B="Objects List unavailable. Please review your WebSockets configuration and try again");let F="calc(100vh - 290px)";return f&&(F="calc(100vh - 315px)"),(0,C.jsx)(h.bQt,{itemActions:k,columns:v?Oe:Se,isLoading:b,entityName:"Objects",idField:"name",records:A,customPaperHeight:F,selectedItems:w,onSelect:y?void 0:t=>{const n=t.target,s=n.value,o=n.checked;let a=[...w];return o?a.push(s):a=a.filter((e=>e!==s)),e((0,c.KX)(a)),e((0,c.A7)(null)),a},customEmptyMessage:B,sortEnabled:{currentSort:m,currentDirection:i,onSortClick:t=>{const n=u()(t,"sortDirection","DESC");x(t.sortBy),d(n),e((0,c.Yw)(!0))}},onSelectAll:()=>{if(e((0,c.A7)(null)),w.length===A.length)return void e((0,c.KX)([]));const t=A.map((e=>e.name));e((0,c.KX)(t))},rowStyle:e=>{var t;let{index:n}=e;return null!==(t=A[n])&&void 0!==t&&t.delete_flag?"deleted":""},sx:{minHeight:j?"100%":"initial"},noBackground:!0})};var Ce=n(64681);const ye=()=>{const e=(0,l.jL)(),t=(0,o.d4)((e=>e.objectBrowser.searchObjects));return(0,C.jsx)(Ce.A,{placeholder:"Start typing to filter objects in the bucket",onChange:t=>{e((0,c.$X)(t))},value:t})};var Ee=n(30614);const Ie=(0,S.A)(s.lazy((()=>n.e(5941).then(n.bind(n,65941))))),Ne=(0,S.A)(s.lazy((()=>Promise.resolve().then(n.bind(n,30718))))),Ae=(0,S.A)(s.lazy((()=>n.e(2704).then(n.bind(n,32704))))),ke=(0,S.A)(s.lazy((()=>Promise.resolve().then(n.bind(n,37524))))),Be={borderWidth:2,borderRadius:2,borderColor:"transparent",outline:"none"},Fe={borderStyle:"dashed",backgroundColor:"transparent",borderColor:"#2196f3"},Le={borderStyle:"dashed",backgroundColor:"transparent",borderColor:"#00e676"},Ve=()=>{var e;const t=(0,l.jL)(),n=(0,a.g)(),d=(0,a.Zp)(),b=(0,a.zy)(),g=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),f=(0,o.d4)((e=>e.objectBrowser.rewind.bucketToRewind)),v=(0,o.d4)((e=>e.objectBrowser.versionsMode)),S=(0,o.d4)((e=>e.objectBrowser.showDeleted)),y=(0,o.d4)((e=>e.objectBrowser.objectDetailsOpen)),E=(0,o.d4)((e=>e.objectBrowser.selectedInternalPaths)),R=(0,o.d4)((e=>e.objectBrowser.requestInProgress)),P=(0,o.d4)((e=>e.objectBrowser.simplePath)),U=(0,o.d4)((e=>e.objectBrowser.versionInfo)),z=(0,o.d4)((e=>e.objectBrowser.lockingEnabled)),G=(0,o.d4)((e=>e.objectBrowser.downloadRenameModal)),M=(0,o.d4)((e=>e.objectBrowser.selectedPreview)),J=(0,o.d4)((e=>e.objectBrowser.shareFileModalOpen)),K=(0,o.d4)((e=>e.objectBrowser.previewOpen)),W=(0,o.d4)((e=>e.objectBrowser.selectedBucket)),H=(0,o.d4)((e=>e.system.anonymousMode)),Y=(0,o.d4)((e=>e.objectBrowser.anonymousAccessOpen)),$=(0,o.d4)((e=>{var t;return(null===(t=e.objectBrowser)||void 0===t?void 0:t.records)||[]})),Z=(0,o.d4)(B.Nx),q=(0,o.d4)(B.fT),[Q,X]=(0,s.useState)(!1),[ee,te]=(0,s.useState)(!1),[ne,se]=(0,s.useState)(!1),[oe,ae]=(0,s.useState)(!1),[ie,le]=(0,s.useState)(!1),[ce,ue]=(0,s.useState)(null),[he,me]=(0,s.useState)(null),[xe,pe]=(0,s.useState)(!1),je=A(U.status),be=n.bucketName||"",ge=b.pathname.split("/browser/".concat(be,"/")),ve=2===ge.length?decodeURIComponent(ge[1]):"",_e=ve.split("/").filter((e=>""!==e));let Se=[be];_e.length>0&&(Se=Se.concat(_e));const Oe=(0,s.useRef)(null),we=(0,s.useRef)(null),Ce=(0,o.d4)((e=>e.console.session&&e.console.session.permissions||{})),Ve=[r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],De=Se.join("/"),Re=function(e,t){const n=T(e,t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:[]).reduce(((e,t)=>{const n=w(t);return n&&e.push(".".concat(n)),e}),[]);return[...new Set(n)].join(",")}(Ce,De,Ve),Pe=T(Ce,De,Ve),Ue=(0,_._)([De,...Pe],[r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS]),ze=(0,_._)(be,[r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS,r.OV.S3_GET_BUCKET_VERSIONING]),Ge=(0,_._)([De,...Pe],[r.OV.S3_DELETE_OBJECT]),Me=(0,_._)([De,...Pe],Ve)||H,Je=(0,_._)(be,[r.OV.S3_GET_BUCKET_POLICY,r.OV.S3_PUT_BUCKET_POLICY,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS]),Ke=(0,o.d4)((e=>e.objectBrowser.selectedObjects)),We=(()=>{let e=!1;if(1===Ke.length){e=!!$.find((e=>e.name==="".concat(Ke[0])&&e.delete_flag))}return e})(),He=(0,s.useCallback)((()=>{const e=Ke[0];!xe&&e&&i.F.buckets.getObjectMetadata(be,{prefix:e}).then((e=>{let t=u()(e.data,"objectMetadata",{});pe(!0),me(t)})).catch((e=>{console.error("Error Getting Metadata Status: ",e,null===e||void 0===e?void 0:e.detailedError),pe(!0)}))}),[be,Ke,xe]);(0,s.useEffect)((()=>{be&&!We&&He()}),[be,Ke,He,We]),(0,s.useEffect)((()=>{g&&f!==be&&t((0,c.rS)())}),[g,f,be,t]),(0,s.useEffect)((()=>{null!==we.current&&(we.current.setAttribute("directory",""),we.current.setAttribute("webkitdirectory",""))}),[we]),(0,s.useEffect)((()=>{if(1===Ke.length){const e=Ke[0],t=e.endsWith("/");let n=(0,N.IZ)(he,e);le(!("none"===n||!Ue)),ae(!(!Ue||t))}else ae(!1),le(!1)}),[Ke,Ue,he]),(0,s.useEffect)((()=>{ce||H||i.F.buckets.getBucketQuota(be).then((e=>{let t=null;e.data.quota&&(t=e.data),ue(t)})).catch((e=>{console.error("Error Getting Quota Status: ",e.error.detailedMessage),ue(null)}))}),[ce,be,H]),(0,s.useEffect)((()=>{Ke.length>0?t((0,c.TO)(!0)):0!==Ke.length||null!==E||R||t((0,c.TO)(!1))}),[Ke,E,t,R]),(0,s.useEffect)((()=>{ne||(t((0,B.ZU)(!0)),se(!0))}),[ne,t,se]),(0,s.useEffect)((()=>{!R&&!Z||H||i.F.buckets.bucketInfo(be).then((e=>{t((0,B.ZU)(!1)),t((0,B.$T)(e.data))})).catch((e=>{t((0,B.ZU)(!1)),t((0,O.C9)((0,m.S)(e)))}))}),[be,Z,t,H,R]),(0,s.useEffect)((()=>{""!==W&&i.F.buckets.getBucketRetentionConfig(W).then((e=>{t((0,c.PJ)(e.data))})).catch((()=>{t((0,c.PJ)(null))}))}),[W,t]);const Ye=e=>{if(null!==e&&void 0!==e&&null!==e.target.files&&void 0!==e.target.files){e.preventDefault();var t=[];for(let n=0;n{let s="";P&&(s=P.endsWith("/")?P:P+"/");((e,n,s,o)=>{let a=a=>new Promise(((i,l)=>{let r="api/v1/buckets/".concat(n,"/objects/upload");const d=a.name,h=new Blob([a],{type:a.type}),m=u()(a,"path",""),x=u()(a,"webkitRelativePath","");let p=o;const j=(0,k.E0)(8);""!==m?p=m:""!==x&&(p=x);let b="";if(""!==s||""!==p){const e=p.split("/").slice(0,-1).join("/"),t=s.endsWith("/")?s.slice(0,-1):s;b="".concat(t).concat(t.endsWith("/")||""===e||e.startsWith("/")?"":"/").concat(e).concat(!e.endsWith("/")||""===e.trim()&&!s.endsWith("/")?"/":"")}r=""!==b?"".concat(r,"?prefix=").concat(encodeURIComponent(b+d)):"".concat(r,"?prefix=").concat(encodeURIComponent(d));const g=encodeURIComponent("".concat(n,"-").concat(b,"-").concat((new Date).getTime(),"-").concat(Math.random()));let f=new XMLHttpRequest;f.open("POST",r,!0),H&&f.setRequestHeader("X-Anonymous","1");const v=e.length>1;let _="An error occurred while uploading the file".concat(v?"s":"",".");const S={413:"Error - File size too large"};f.withCredentials=!1,f.onload=function(){if(f.status>=200&&f.status<300)t((0,c.rx)(g)),i({status:f.status}),(0,k.vy)(j);else{if(S[f.status])_=S[f.status];else if(f.response)try{const e=JSON.parse(f.response);_=e.detailedMessage}catch(e){_="something went wrong"}t((0,c.iL)({instanceID:g,msg:_})),l({status:f.status,message:_}),(0,k.vy)(j)}},f.upload.addEventListener("error",(()=>{l(_),t((0,c.iL)({instanceID:g,msg:"A network error occurred."}))})),f.upload.addEventListener("progress",(e=>{const n=Math.floor(100*e.loaded/e.total);t((0,c.DW)({instanceID:g,progress:n}))})),f.onerror=()=>{l(_),t((0,c.iL)({instanceID:g,msg:"A network error occurred."}))},f.onloadend=()=>{0===e.length&&t((0,c.Yw)(!0))},f.onabort=()=>{t((0,c.Dm)(g))};const O=new FormData;void 0!==a.size&&(O.append(a.size.toString(),h,d),(0,k.FP)(j,f),t((0,c.cP)({ID:j,bucketName:n,done:!1,instanceID:g,percentage:0,prefix:"".concat(b).concat(d),type:"upload",waitingForFile:!1,failed:!1,cancelled:!1,errorMessage:""})),(0,k.vx)(j,O))}));const i=[];t((0,c.Nu)());for(let t=0;t{const n=e.filter((e=>"rejected"===e.status));if(n.length>0){const e=i.length,s=i.length-n.length,o={errorMessage:"There were some errors during file upload",detailedError:"Uploaded files ".concat(s,"/").concat(e)};t((0,O.C9)(o))}t((0,c.Yw)(!0))}))})(e,be,s,n)}),[be,t,P,H]),Ze=(0,s.useCallback)((e=>{if(e&&e.length>0&&Me){let n=e[0].path,s=e;Re.length>0&&(s=e.filter((e=>{const t=w(e.name);return Re.includes(t)}))),s.length?($e(s,n),console.log("".concat(s.length," Allowed Files Processed out of ").concat(e.length,"."),De,...Pe),s.length!==e.length&&t((0,O.C9)({errorMessage:"Upload is restricted.",detailedError:(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload objects to this location")}))):(t((0,O.C9)({errorMessage:"Could not process drag and drop.",detailedError:(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload objects to this location")})),console.error("Could not process drag and drop . upload may be restricted.",De,...Pe))}Me||t((0,O.C9)({errorMessage:"Upload not allowed",detailedError:(0,r.vj)([r.OV.S3_PUT_OBJECT,r.OV.S3_PUT_ACTIONS],"upload objects to this location")}))}),[$e]),{getRootProps:qe,getInputProps:Qe,isDragActive:Xe,isDragAccept:et}=(0,x.VB)({noClick:!0,onDrop:Ze}),tt=(0,s.useMemo)((()=>({...Be,...Xe?Fe:{},...et?Le:{}})),[Xe,et]),nt=e=>{if(t((0,c.A7)(null)),t((0,c.cQ)({status:!1})),y&&null!==E){const e=ve.split("/");e.pop();let t="";e&&e.length>0&&(t="".concat(e.join("/"),"/")),d("/browser/".concat(encodeURIComponent(be),"/").concat(encodeURIComponent(t)))}t((0,c.TO)(!1)),e&&t((0,c.Yw)(!0))};let st=p.c9.now();null!==q&&void 0!==q&&q.creation_date&&(st=p.c9.fromISO(q.creation_date));const ot=(null===Ke||void 0===Ke?void 0:Ke.length)<=1?"Download Selected":" Download selected objects as Zip. Any Deleted objects in the selection would be skipped from download.",at=[{action:()=>{t((0,F.op)(be))},label:"Download",disabled:!Ue||We,icon:(0,C.jsx)(h.s3U,{}),tooltip:Ue?ot:(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS],"download objects from this bucket")},{action:()=>{t((0,F.mS)())},label:"Share",disabled:1!==Ke.length||!oe||We,icon:(0,C.jsx)(h.liv,{}),tooltip:oe?"Share Selected File":"Sharing unavailable"},{action:()=>{t((0,F.HS)())},label:"Preview",disabled:1!==Ke.length||!ie||We,icon:(0,C.jsx)(h.cyn,{}),tooltip:ie?"Preview Selected File":"Preview unavailable"},{action:()=>{t((0,F.oz)())},label:"Anonymous Access",disabled:1!==Ke.length||!Ke[0].endsWith("/")||!Je,icon:(0,C.jsx)(h._kf,{}),tooltip:1===Ke.length&&Ke[0].endsWith("/")?"Set Anonymous Access to this Folder":"Anonymous Access unavailable"},{action:()=>{X(!0)},label:"Delete",icon:(0,C.jsx)(h.d7y,{}),disabled:!Ge||0===Ke.length,tooltip:Ge?"Delete Selected Files":(0,r.vj)([r.OV.S3_DELETE_OBJECT],"delete objects in this bucket")}];return(0,C.jsxs)(s.Fragment,{children:[J&&M&&(0,C.jsx)(Ne,{open:J,closeModalAndRefresh:()=>{t((0,c.Lf)(!1)),t((0,c.go)(null))},bucketName:be,dataObject:{name:M.name,last_modified:"",version_id:M.version_id}}),Q&&(0,C.jsx)(Ie,{deleteOpen:Q,selectedBucket:be,selectedObjects:Ke,closeDeleteModalAndRefresh:e=>{X(!1),e&&(t((0,O.Hk)("Objects deleted successfully.")),t((0,c.KX)([])),t((0,c.Yw)(!0)))},versioning:U}),ee&&(0,C.jsx)(Ae,{open:ee,closeModalAndRefresh:()=>{te(!1)},bucketName:be}),K&&M&&(0,C.jsx)(ke,{open:K,bucketName:be,actualInfo:{name:M.name||"",last_modified:"",version_id:M.version_id||"",size:M.size||0},onClosePreview:()=>{t((0,c.xE)(!1)),t((0,c.go)(null))}}),!!G&&(0,C.jsx)(re,{open:!!G,closeModal:()=>{t((0,c.Ew)(null))},currentItem:(null===(e=G.name.split("/"))||void 0===e?void 0:e.pop())||"",bucketName:be,internalPaths:ve,actualInfo:{name:G.name,last_modified:"",version_id:G.version_id,size:G.size}}),Y&&(0,C.jsx)(Ee.default,{onClose:()=>{t((0,c.I8)(!1))},bucket:be,modalOpen:Y,prefilledRoute:"".concat(Ke[0],"*")}),(0,C.jsxs)(h.Mxu,{variant:"full",children:[H&&(0,C.jsx)("div",{style:{paddingBottom:16},children:(0,C.jsx)(ye,{})}),(0,C.jsx)(h.azJ,{withBorders:!0,sx:{padding:"0 5px"},children:(0,C.jsx)(h.lcx,{icon:(0,C.jsx)("span",{children:(0,C.jsx)(h.brV,{style:{width:30}})}),title:be,subTitle:H?null:(0,C.jsxs)(h.azJ,{sx:{"& .detailsSpacer":{marginRight:18,"@media (max-width: 600px)":{marginRight:0}}},children:[(0,C.jsxs)("span",{className:"detailsSpacer",children:["Created on:\xa0",(0,C.jsx)("strong",{children:null!==q&&void 0!==q&&q.creation_date?st.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)"):""})]}),(0,C.jsxs)("span",{className:"detailsSpacer",children:["Access:\xa0\xa0",(0,C.jsx)("strong",{children:(null===q||void 0===q?void 0:q.access)||""})]}),q&&(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("span",{className:"detailsSpacer",children:[q.size&&(0,C.jsx)(s.Fragment,{children:(0,j.qO)(q.size)}),q.size&&ce&&(0,C.jsxs)(s.Fragment,{children:[" ","/ ",(0,j.qO)(ce.quota||0)]}),q.size&&q.objects?" - ":"",q.objects&&(0,C.jsxs)(s.Fragment,{children:[q.objects,"\xa0Object",q.objects&&1!==q.objects?"s":""]})]})})]}),actions:(0,C.jsxs)(s.Fragment,{children:[!H&&(0,C.jsx)(L.A,{tooltip:ze?"Rewind Bucket":(0,r.vj)([r.OV.S3_GET_OBJECT,r.OV.S3_GET_ACTIONS,r.OV.S3_GET_BUCKET_VERSIONING],"apply rewind in this bucket"),children:(0,C.jsx)(h.$nd,{id:"rewind-objects-list",label:"Rewind",icon:(0,C.jsx)(h.Exy,{color:"alert",dotOnly:!0,invisible:!g,children:(0,C.jsx)(h.osr,{style:{minWidth:16,minHeight:16,width:16,height:16,marginTop:-3}})}),variant:"regular",onClick:()=>{te(!0)},disabled:!je||!ze})}),(0,C.jsx)(L.A,{tooltip:"Reload List",children:(0,C.jsx)(h.$nd,{id:"refresh-objects-list",label:"Refresh",icon:(0,C.jsx)(h.fNY,{}),variant:"regular",onClick:()=>{v?t((0,c.SK)(!0)):(t((0,c.A3)()),t((0,c.Yw)(!0)))},disabled:!H&&(!(0,_._)(be,[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET])||g)})}),(0,C.jsx)("input",{type:"file",multiple:!0,accept:Re||void 0,onChange:Ye,style:{display:"none"},ref:Oe}),(0,C.jsx)("input",{type:"file",multiple:!0,onChange:Ye,style:{display:"none"},ref:we}),(0,C.jsx)(V,{bucketName:be,uploadPath:De,uploadFileFunction:e=>{Oe&&Oe.current&&Oe.current.click(),e()},uploadFolderFunction:e=>{we&&we.current&&we.current.click(),e()}})]}),bottomBorder:!1})}),(0,C.jsxs)("div",{id:"object-list-wrapper",...qe({style:{...tt}}),children:[(0,C.jsx)("input",{...Qe()}),(0,C.jsxs)(h.azJ,{withBorders:!0,sx:{display:"flex",borderTop:0,padding:0,"& .hideListOnSmall":{"@media (max-width: 799px)":{display:"none"}}},children:[v?(0,C.jsx)(s.Fragment,{children:null!==E&&(0,C.jsx)(fe,{internalPaths:E,bucketName:be})}):(0,C.jsx)(_.R,{scopes:[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],resource:be,errorProps:{disabled:!0},children:(0,C.jsxs)(h.xA9,{item:!0,xs:12,sx:{width:"100%",position:"relative","&.detailsOpen":{"@media (max-width: 799px)":{display:"none"}}},className:y?"detailsOpen":"",children:[!H&&(0,C.jsx)(h.xA9,{item:!0,xs:12,sx:{padding:"12px 14px 5px"},children:(0,C.jsx)(I,{bucketName:be,internalPaths:ve,additionalOptions:!je||g?null:(0,C.jsx)(h.Sc0,{name:"deleted_objects",id:"showDeletedObjects",value:"deleted_on",label:"Show deleted objects",onChange:()=>{t((0,c.A3)()),t((0,c.lA)(!S)),nt(!0)},checked:S,sx:{marginLeft:5,"@media (max-width: 600px)":{marginLeft:0,flexDirection:"row"}}}),hidePathButton:!1})}),(0,C.jsx)(Te,{})]})}),!H&&(0,C.jsx)(_.R,{scopes:[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],resource:be,errorProps:{disabled:!0},children:(0,C.jsxs)(D,{open:y,closePanel:()=>{nt(!1)},className:"".concat(v?"hideListOnSmall":""),children:[Ke.length>0&&(0,C.jsx)(h.Smc,{items:at,title:"Selected Objects:"}),null!==E&&(0,C.jsx)(de,{internalPaths:E,bucketName:be,onClosePanel:nt,versioningInfo:U,locking:z})]})})]})]})]})]})};var De=n(18218),Re=n(69772),Pe=n(48793),Ue=n(59707),ze=n(55968);const Ge=e=>{let{bucketName:t}=e;const n=(0,l.jL)(),i=(0,o.d4)(we.s$),d=(0,o.d4)((e=>e.objectBrowser.versionsMode)),u=(0,o.d4)((e=>e.objectBrowser.versionedFile)),m=(0,o.d4)((e=>e.objectBrowser.searchVersions)),x=!(null===i||void 0===i||!i.includes("object-browser-only")),p=(0,a.Zp)(),j=(0,De.A)(t,[r.OV.S3_GET_BUCKET_POLICY,r.OV.S3_PUT_BUCKET_POLICY,r.OV.S3_GET_BUCKET_VERSIONING,r.OV.S3_PUT_BUCKET_VERSIONING,r.OV.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,r.OV.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,r.OV.S3_DELETE_BUCKET,r.OV.S3_GET_BUCKET_NOTIFICATIONS,r.OV.S3_PUT_BUCKET_NOTIFICATIONS,r.OV.S3_GET_REPLICATION_CONFIGURATION,r.OV.S3_PUT_REPLICATION_CONFIGURATION,r.OV.S3_GET_LIFECYCLE_CONFIGURATION,r.OV.S3_PUT_LIFECYCLE_CONFIGURATION,r.OV.ADMIN_GET_BUCKET_QUOTA,r.OV.ADMIN_SET_BUCKET_QUOTA,r.OV.S3_PUT_BUCKET_TAGGING,r.OV.S3_GET_BUCKET_TAGGING,r.OV.S3_LIST_BUCKET_VERSIONS,r.OV.S3_GET_BUCKET_POLICY_STATUS,r.OV.S3_DELETE_BUCKET_POLICY,r.OV.S3_GET_ACTIONS,r.OV.S3_PUT_ACTIONS]),b=(0,C.jsx)(s.Fragment,{children:d?(0,C.jsx)(s.Fragment,{children:(0,C.jsx)(Ce.A,{placeholder:"Start typing to filter versions of ".concat(u),onChange:e=>{n((0,c.aj)(e))},value:m})}):(0,C.jsx)(_.R,{scopes:[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET],resource:t,errorProps:{disabled:!0},children:(0,C.jsx)(ye,{})})});return(0,s.useEffect)((()=>{n((0,O.ph)("object_browser"))}),[]),(0,C.jsx)(s.Fragment,{children:x?(0,C.jsxs)(h.xA9,{container:!0,sx:{padding:"20px 32px 0"},children:[(0,C.jsx)(h.xA9,{children:(0,C.jsx)(Re.A,{marginRight:30,marginTop:10})}),(0,C.jsxs)(h.xA9,{item:!0,xs:!0,sx:{display:"flex",gap:10},children:[b,(0,C.jsx)(Ue.A,{})]})]}):(0,C.jsx)(Pe.A,{label:(0,C.jsx)(h.EGL,{label:"Object Browser",onClick:()=>{p(r.zZ.OBJECT_BROWSER_VIEW)}}),actions:(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)(_.R,{scopes:r.pC[r.ac.BUCKET_ADMIN],resource:t,errorProps:{disabled:!0},children:(0,C.jsx)(L.A,{tooltip:j?"Configure Bucket":"You do not have the required permissions to configure this bucket. Please contact your MinIO administrator to request "+r.ac.BUCKET_ADMIN+" permisions.",children:(0,C.jsx)(h.$nd,{id:"configure-bucket-main",color:"primary","aria-label":"Configure Bucket",onClick:()=>p("/buckets/".concat(t,"/admin")),icon:(0,C.jsx)(h.Zes,{style:{width:20,height:20,marginTop:-3}}),style:{padding:"0 10px"}})})}),(0,C.jsx)(ze.A,{})]}),middleComponent:b})})},Me=()=>{const e=(0,l.jL)(),t=(0,a.g)(),n=(0,a.zy)(),d=(0,o.d4)((e=>e.objectBrowser.loadingVersioning)),u=(0,o.d4)((e=>e.objectBrowser.rewind.rewindEnabled)),h=(0,o.d4)((e=>e.objectBrowser.rewind.dateToRewind)),m=(0,o.d4)((e=>e.objectBrowser.showDeleted)),x=(0,o.d4)((e=>e.objectBrowser.requestInProgress)),p=(0,o.d4)((e=>e.objectBrowser.loadingLocking)),j=(0,o.d4)((e=>e.objectBrowser.reloadObjectsList)),b=(0,o.d4)((e=>e.objectBrowser.simplePath)),g=(0,o.d4)((e=>e.system.anonymousMode)),f=(0,o.d4)((e=>e.objectBrowser.selectedBucket)),v=(0,o.d4)((e=>e.objectBrowser.records)),_=t.bucketName||"",S=n.pathname.split("/browser/".concat(encodeURIComponent(_),"/")),O=2===S.length?decodeURIComponent(S[1]):"",w=(0,s.useCallback)((t=>{let n=(new Date).toISOString();null!==h&&u&&(n=h);e({type:"socket/OBRequest",payload:{bucketName:_,path:t,rewindMode:u||m,date:n}})}),[_,m,h,u,e]),T=(0,s.useCallback)((function(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e((0,c.cQ)({status:!1}));let n=O;O.endsWith("/")||""===O||(n="".concat(O.split("/").slice(0,-1).join("/"),"/")),"/"===n&&(n=""),(n!==b||_!==f||t)&&(e((0,c.u)(!0)),w(n))}),[O,e,b,f,_,w]);(0,s.useEffect)((()=>()=>{e({type:"socket/OBCancelLast"})}),[e]),(0,s.useEffect)((()=>{e((0,c.vn)(!0)),O.endsWith("/")||""===O?(e((0,c.TO)(!1)),e((0,c.A7)(null)),e((0,c.Qy)(!0))):(e((0,c.oe)(!0)),e((0,c.TO)(!0)),e((0,c.SK)(!0)),e((0,c.A7)(O||"")))}),[_,O,h,u,e]),(0,s.useEffect)((()=>{T(!1)}),[T]),(0,s.useEffect)((()=>{j&&0===v.length&&!x&&T(!0)}),[j,v,x,T]);const y=(0,De.A)(_,[r.OV.S3_LIST_BUCKET,r.OV.S3_ALL_LIST_BUCKET])||g;return(0,s.useEffect)((()=>{d&&!g&&(y?i.F.buckets.getBucketVersioning(_).then((t=>{e((0,c.AP)(t.data)),e((0,c.vn)(!1))})).catch((t=>{console.error("Error Getting Object Versioning Status: ",t.error.detailedMessage),e((0,c.vn)(!1))})):(e((0,c.vn)(!1)),e((0,c.A3)())))}),[_,d,e,y,g]),(0,s.useEffect)((()=>{p&&(y?i.F.buckets.getBucketObjectLockingStatus(_).then((t=>{e((0,c.xW)(t.data.object_locking_enabled)),e((0,c.Qy)(!1))})).catch((t=>{console.error("Error Getting Object Locking Status: ",t.error.detailedMessage),e((0,c.Qy)(!1))})):(e((0,c.A3)()),e((0,c.Qy)(!1))))}),[_,p,e,y]),(0,C.jsxs)(s.Fragment,{children:[!g&&(0,C.jsx)(Ge,{bucketName:_}),(0,C.jsx)(Ve,{})]})}},30718:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var s=n(65043),o=n(22166),a=n(89923),i=n(61476),l=n.n(i),r=n(94141),c=n(24241),d=n(70579);const u=e=>{let{id:t,initialDate:n,label:o,maxSeconds:i,entity:l,onChange:r}=e;const u=Math.floor(i/86400),h=Math.floor(i%86400/3600),m=Math.floor(i%3600/60),[x,p]=(0,s.useState)(0),[j,b]=(0,s.useState)(0),[g,f]=(0,s.useState)(0),[v,_]=(0,s.useState)(!0),[S,O]=(0,s.useState)(c.c9.now());(0,s.useEffect)((()=>{p(u),b(h),f(m)}),[u,h,m]),(0,s.useEffect)((()=>{isNaN(j)||isNaN(x)||isNaN(g)||O(((e,t,n,s)=>c.c9.fromJSDate(e).plus({hours:n+24*t,minutes:s}))(n,x,j,g))}),[n,x,j,g]),(0,s.useEffect)((()=>{if(v){const e=S.toFormat("yyyy-MM-dd HH:mm:ss");r(e.split(" ").join("T"),!0)}else r("0000-00-00",!1)}),[S,r,v]),(0,s.useEffect)((()=>{let e=!0;(x<0||x>7||x>u||isNaN(x))&&(e=!1),(j<0||j>23||isNaN(j))&&(e=!1),(g<0||g>59||isNaN(g))&&(e=!1),x===u&&(j>h&&(e=!1),j===h&&g>m&&(e=!1)),x<=0&&j<=0&&g<=0&&(e=!1),_(e)}),[S,u,h,m,r,x,j,g]);const w={"& .textBoxContainer":{minWidth:0},"& input":{textAlign:"center",paddingRight:10,paddingLeft:10,width:40}};return(0,d.jsxs)(a.azJ,{className:"inputItem",children:[(0,d.jsx)(a.azJ,{sx:{display:"flex",alignItems:"center",marginBottom:5},children:(0,d.jsx)(a.l1Y,{htmlFor:t,children:o})}),(0,d.jsxs)(a.azJ,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-evenly",gap:10,"& .reverseInput":{flexFlow:"row-reverse","& > label":{fontWeight:400,marginLeft:15,marginRight:25}}},children:[(0,d.jsx)(a.azJ,{children:(0,d.jsx)(a.cl_,{id:t,className:"reverseInput removeArrows",type:"number",min:"0",max:"7",label:"Days",name:t,onChange:e=>{p(parseInt(e.target.value))},value:x.toString(),sx:w,noLabelMinWidth:!0})}),(0,d.jsx)(a.azJ,{children:(0,d.jsx)(a.cl_,{id:t,className:"reverseInput removeArrows",type:"number",min:"0",max:"23",label:"Hours",name:t,onChange:e=>{b(parseInt(e.target.value))},value:j.toString(),sx:w,noLabelMinWidth:!0})}),(0,d.jsx)(a.azJ,{children:(0,d.jsx)(a.cl_,{id:t,className:"reverseInput removeArrows",type:"number",min:"0",max:"59",label:"Minutes",name:t,onChange:e=>{f(parseInt(e.target.value))},value:g.toString(),sx:w,noLabelMinWidth:!0})})]}),(0,d.jsx)(a.azJ,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-start",marginTop:25,marginLeft:10,marginBottom:15,"& .validityText":{fontSize:14,marginTop:15,display:"flex",alignItems:"center",justifyContent:"center","@media (max-width: 900px)":{flexFlow:"column"},"& > .min-icon":{color:"#5E5E5E",width:15,height:15,marginRight:10}},"& .validTill":{fontWeight:"bold",marginLeft:15},"& .invalidDurationText":{marginTop:15,display:"flex",color:"red",fontSize:11}},children:v?(0,d.jsxs)("div",{className:"validityText",children:[(0,d.jsx)(a.qYV,{}),(0,d.jsxs)("div",{children:[l," will be available until:"]})," ",(0,d.jsx)("div",{className:"validTill",children:S.toFormat("MM/dd/yyyy HH:mm:ss ZZZZ")})]}):(0,d.jsx)("div",{className:"invalidDurationText",children:"Please select a valid duration."})})]})};var h=n(56483),m=n(64159),x=n(20554),p=n(56629),j=n(53518),b=n(81708),g=n(6035);const f=e=>{let{open:t,closeModalAndRefresh:n,bucketName:i,dataObject:c}=e;const f=(0,x.jL)(),v=(0,o.d4)(m.Rq),_=(0,o.d4)(g.yL),[S,O]=(0,s.useState)(""),[w,T]=(0,s.useState)(!0),[C,y]=(0,s.useState)(!1),[E,I]=(0,s.useState)(""),[N,A]=(0,s.useState)(!0),[k,B]=(0,s.useState)("null"),F=new Date;return(0,s.useEffect)((()=>{f((0,b.Ex)())}),[f]),(0,s.useEffect)((()=>{if(void 0===c.version_id)return v?(p.F.buckets.listObjects(i,{prefix:c.name||"",with_versions:v}).then((e=>{const t=(e.data.objects||[]).find((e=>e.is_latest));B(t?"".concat(t.version_id):"null")})).catch((e=>{f((0,m.Dy)((0,j.S)(e.error)))})),void T(!1)):(B("null"),void T(!1));B(c.version_id||"null"),T(!1)}),[i,c,v,f]),(0,s.useEffect)((()=>{if(N&&!w){y(!0),O("");const e=new Date("".concat(E)),t=new Date,n=Math.ceil((e.getTime()-t.getTime())/1e3);n>0&&p.F.buckets.shareObject(i,{prefix:c.name||"",version_id:k,expires:""!==E?"".concat(n,"s"):""}).then((e=>{O(e.data),y(!1)})).catch((e=>{f((0,m.Dy)((0,j.S)(e.error))),O(""),y(!1)}))}}),[c,E,i,N,O,f,v,w,k]),(0,d.jsx)(s.Fragment,{children:(0,d.jsxs)(r.A,{title:"Share File",titleIcon:(0,d.jsx)(a.liv,{style:{fill:"#4CCB92"}}),modalOpen:t,onClose:()=>{n()},children:[w&&(0,d.jsx)(a.xA9,{item:!0,xs:12,children:(0,d.jsx)(a.z21,{})}),!w&&(0,d.jsxs)(s.Fragment,{children:[(0,d.jsx)(a.xA9,{item:!0,xs:12,sx:{fontSize:14,fontWeight:400},children:(0,d.jsx)(a.m_M,{placement:"right",tooltip:(0,d.jsxs)("span",{children:["You can reset your session by logging out and logging back in to the web UI. ",(0,d.jsx)("br",{})," ",(0,d.jsx)("br",{}),"You can increase the maximum configuration time by setting the MINIO_STS_DURATION environment variable on all your nodes. ",(0,d.jsx)("br",{})," ",(0,d.jsx)("br",{}),"You can use ",(0,d.jsx)("b",{children:"mc share"})," as an alternative to this UI, where the session length does not limit the URL validity."]}),children:(0,d.jsxs)("span",{children:["The following URL lets you share this object without requiring a login. ",(0,d.jsx)("br",{}),"The URL expires automatically at the earlier of your configured time (",(0,h.K7)(_),") or the expiration of your current web session."]})})}),(0,d.jsx)("br",{}),(0,d.jsx)(a.xA9,{item:!0,xs:12,children:(0,d.jsx)(u,{initialDate:F,id:"date",label:"Active for",maxSeconds:_,onChange:(e,t)=>{A(t),t?I(e):(I(""),O(""))},entity:"Link"})}),(0,d.jsx)(a.xA9,{item:!0,xs:12,sx:{marginBottom:10},children:(0,d.jsx)(a.EmB,{actionButton:(0,d.jsx)(l(),{text:S,children:(0,d.jsx)(a.$nd,{id:"copy-path",variant:"regular",onClick:()=>{f((0,m.h0)("Share URL Copied to clipboard"))},disabled:""===S||C,style:{width:"28px",height:"28px",padding:"0px"},icon:(0,d.jsx)(a.TdU,{})})}),children:S})})]})]})})}},37524:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>g});var s=n(65043),o=n(94141),a=n(89923),i=n(33097),l=n.n(i),r=n(93445),c=n(56629),d=n(72809),u=n(97806),h=n(10934),m=n(70579);d.A.GlobalWorkerOptions.workerSrc="./scripts/pdf.worker.min.js";const x=e=>{let{path:t,loading:n,onLoad:o,downloadFile:i}=e;const[l,r]=(0,s.useState)(!1),[c,d]=(0,s.useState)(0);if(!t)return null;const x=c>5?5:c,p=Array.from(Array(x).keys());return(0,m.jsxs)(s.Fragment,{children:[l&&0===c&&(0,m.jsx)(a.Wei,{variant:"error",title:"Error",message:(0,m.jsxs)(s.Fragment,{children:["File preview couldn't be displayed, Please try Download instead.",(0,m.jsx)(a.azJ,{sx:{display:"flex",justifyContent:"center",marginTop:12},children:(0,m.jsx)(a.$nd,{id:"download-preview",onClick:i,variant:"callAction",children:"Download File"})})]}),sx:{marginBottom:10}}),!n&&!l&&(0,m.jsx)(a.Wei,{variant:"warning",title:"File Preview",message:(0,m.jsxs)(s.Fragment,{children:["This is a File Preview for the first ",p.length," pages of the document, if you wish to work with the full document please download instead.",(0,m.jsx)(a.azJ,{sx:{display:"flex",justifyContent:"center",marginTop:12},children:(0,m.jsx)(a.$nd,{id:"download-preview",onClick:i,variant:"callAction",children:"Download File"})})]}),sx:{marginBottom:10}}),!l&&(0,m.jsx)(a.azJ,{sx:{overflowY:"auto","& .react-pdf__Page__canvas":{margin:"0 auto",backgroundColor:"transparent"}},children:(0,m.jsx)(u.A,{file:t,onLoadSuccess:e=>{let{_pdfInfo:t}=e;d(t.numPages||0),r(!1),o()},onLoadError:e=>{r(!0),o(),console.error(e)},children:p.map((e=>(0,m.jsx)(h.A,{pageNumber:e+1,renderAnnotationLayer:!1,renderTextLayer:!1,renderForms:!1},"render-page-".concat(e))))})})]})};var p=n(48245),j=n(20554);const b=e=>{let{bucketName:t,actualInfo:n,isFullscreen:o=!1}=e;const i=(0,j.jL)(),[d,u]=(0,s.useState)(!0),[h,b]=(0,s.useState)(null),[g,f]=(0,s.useState)(!1),v=(null===n||void 0===n?void 0:n.name)||"",_=(0,s.useCallback)((()=>{g||c.F.buckets.getObjectMetadata(t,{prefix:v,versionID:n.version_id||""}).then((e=>{let t=l()(e.data,"objectMetadata",{});f(!0),b(t)})).catch((e=>{console.error("Error Getting Metadata Status: ",e,null===e||void 0===e?void 0:e.detailedError),f(!0)}))}),[t,v,g,n.version_id]);(0,s.useEffect)((()=>{t&&v&&_()}),[t,v,_]);let S="";if(n){let e=document.baseURI.replace(window.location.origin,"");S="".concat(window.location.origin).concat(e,"api/v1/buckets/").concat(encodeURIComponent(t),"/objects/download?preview=true&prefix=").concat(encodeURIComponent(n.name||"")),n.version_id&&(S=S.concat("&version_id=".concat(n.version_id)))}let O=(0,r.IZ)(h,v);const w=()=>{u(!1)};return(0,m.jsxs)(s.Fragment,{children:["none"!==O&&d&&(0,m.jsx)(a.xA9,{item:!0,xs:12,children:(0,m.jsx)(a.z21,{})}),g?(0,m.jsxs)(a.azJ,{sx:{textAlign:"center","& .iframeContainer":{border:"0px",flex:"1 1 auto",width:"100%",height:250,backgroundColor:"transparent",borderRadius:5,"&.image":{height:500},"&.audio":{height:150},"&.video":{height:350},"&.fullHeight":{height:"calc(100vh - 185px)"}},"& .iframeBase":{backgroundColor:"#fff"},"& .iframeHidden":{display:"none"}},children:["video"===O&&(0,m.jsx)("video",{style:{width:"auto",height:"auto",maxWidth:"calc(100vw - 100px)",maxHeight:"calc(100vh - 200px)"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:w,children:(0,m.jsx)("source",{src:S,type:"video/mp4"})}),"audio"===O&&(0,m.jsx)("audio",{style:{width:"100%",height:"auto"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:w,children:(0,m.jsx)("source",{src:S,type:"audio/mpeg"})}),"image"===O&&(0,m.jsx)("img",{style:{width:"auto",height:"auto",maxWidth:"100vw",maxHeight:"100vh"},src:S,alt:"preview",onLoad:w}),"pdf"===O&&(0,m.jsx)(s.Fragment,{children:(0,m.jsx)(x,{path:S,onLoad:w,loading:d,downloadFile:()=>(0,p._)(i,t,S,n)})}),"none"===O&&(0,m.jsx)("div",{children:(0,m.jsx)(a.Wei,{message:" File couldn't be previewed using file extension or mime type. Please try Download instead",title:"Preview unavailable",sx:{margin:"15px 0"}})}),"none"!==O&&"video"!==O&&"audio"!==O&&"image"!==O&&"pdf"!==O&&(0,m.jsx)("div",{className:"iframeBase ".concat(d?"iframeHidden":""),children:(0,m.jsx)("iframe",{src:S,title:"File Preview",allowTransparency:!0,className:"iframeContainer ".concat(o?"fullHeight":O),onLoad:w,children:"File couldn't be loaded. Please try Download instead"})})]}):null]})},g=e=>{let{open:t,bucketName:n,actualInfo:i,onClosePreview:l}=e;return(0,m.jsx)(s.Fragment,{children:(0,m.jsx)(o.A,{modalOpen:t,title:"Preview - ".concat(null===i||void 0===i?void 0:i.name),onClose:l,wideLimit:!1,titleIcon:(0,m.jsx)(a.jG,{}),children:(0,m.jsx)(b,{bucketName:n,actualInfo:i})})})}},72237:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var s=n(65043),o=n(70579);const a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,o.jsx)(s.Suspense,{fallback:t,children:(0,o.jsx)(e,{...n})})}}},81708:(e,t,n)=>{"use strict";n.d(t,{Ex:()=>p,HS:()=>h,mS:()=>m,op:()=>u,oz:()=>x});var s=n(80907),o=n(56483),a=n(37414),i=n(93445),l=n(6035),r=n(64159),c=n(24241),d=n(56629);const u=(0,s.zD)("objectBrowser/downloadSelected",(async(e,t)=>{let{getState:n,rejectWithValue:s,dispatch:d}=t;const u=n(),h=t=>{const n=encodeURIComponent("".concat(e,"-").concat(t.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),s=(0,a.E0)(8),o=(0,i.RG)(e,t.name,t.version_id,t.size,null,s,(e=>{d((0,l.DW)({instanceID:n,progress:e}))}),(()=>{d((0,l.rx)(n))}),(e=>{d((0,l.iL)({instanceID:n,msg:e}))}),(()=>{d((0,l.Dm)(n))}),(()=>{d((0,r.Hk)("File download will be handled directly by the browser."))}));(0,a.FP)(s,o),d((0,l.cP)({ID:s,bucketName:e,done:!1,instanceID:n,percentage:0,prefix:t.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))};if(0!==u.objectBrowser.selectedObjects.length){let t=[];const n=e=>u.objectBrowser.selectedObjects.includes(e.name);if(t=u.objectBrowser.records.filter(n),1===t.length){if(t[0].name.length>200&&(0,o.oK)().toLowerCase().includes("win"))return void d((0,l.Ew)(t[0]));h(t[0])}else if(1===t.length)h(t[0]);else if(t.length>1){const n="".concat(c.c9.now().toFormat("LL-dd-yyyy-HH-mm-ss"),"_files_list.zip"),s=t.reduce(((e,t)=>{const n=null===t||void 0===t?void 0:t.delete_flag;return t&&!n?e.push(t.name):console.log("Skipping ".concat(null===t||void 0===t?void 0:t.name," from download.")),e}),[]);return void await(0,i.Fj)(e,s,n)}}})),h=(0,s.zD)("objectBrowser/openPreview",(async(e,t)=>{let{getState:n,rejectWithValue:s,dispatch:o}=t;const a=n();if(1===a.objectBrowser.selectedObjects.length){let e;const t=e=>a.objectBrowser.selectedObjects.includes(e.name);e=a.objectBrowser.records.find(t),e&&(o((0,l.go)(e)),o((0,l.xE)(!0)))}})),m=(0,s.zD)("objectBrowser/openShare",(async(e,t)=>{let{getState:n,rejectWithValue:s,dispatch:o}=t;const a=n();if(1===a.objectBrowser.selectedObjects.length){let e;const t=e=>a.objectBrowser.selectedObjects.includes(e.name);e=a.objectBrowser.records.find(t),e&&(o((0,l.go)(e)),o((0,l.Lf)(!0)))}})),x=(0,s.zD)("objectBrowser/openAnonymousAccess",(async(e,t)=>{let{getState:n,dispatch:s}=t;const o=n();1===o.objectBrowser.selectedObjects.length&&o.objectBrowser.selectedObjects[0].endsWith("/")&&s((0,l.I8)(!0))})),p=(0,s.zD)("objectBrowser/maxShareLinkExpTime",(async(e,t)=>{let{rejectWithValue:n,dispatch:s}=t;return d.F.buckets.getMaxShareLinkExp().then((e=>{s((0,l.QV)(e.data.exp))})).catch((async e=>n(e.error)))}))},48245:(e,t,n)=>{"use strict";n.d(t,{_:()=>r});var s=n(56483),o=n(37414),a=n(93445),i=n(6035),l=n(64159);const r=(e,t,n,r)=>{var c;const d=encodeURIComponent("".concat(t,"-").concat(r.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),u=(0,s.oK)().toLowerCase().includes("win");if(((null===(c=r.name)||void 0===c?void 0:c.length)||0)>200&&u)return void e((0,i.Jl)(!0));const h=(0,o.E0)(8),m=(0,a.RG)(t,n,r.version_id,r.size||0,null,h,(t=>{e((0,i.DW)({instanceID:d,progress:t}))}),(()=>{e((0,i.rx)(d))}),(t=>{e((0,i.iL)({instanceID:d,msg:t}))}),(()=>{e((0,i.Dm)(d))}),(()=>{e((0,l.Hk)("File download will be handled directly by the browser."))}));(0,o.FP)(h,m),e((0,i.cP)({ID:h,bucketName:t,done:!1,instanceID:d,percentage:0,prefix:r.name||"",type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}},49501:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var s=n(65043),o=n(89923),a=n(70579);const i=e=>{let{value:t}=e;const[n,i]=(0,s.useState)(!1);return(0,a.jsxs)(o.azJ,{sx:{display:"flex",alignItems:"center",flexFlow:"row",["@media (max-width: ".concat(o.nmC.sm,"px)")]:{flexFlow:"column"}},children:[(0,a.jsx)(o.cl_,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:n?"text":"password",onChange:()=>{},value:t,overlayIcon:(0,a.jsx)(o.TdU,{}),readOnly:!0,overlayAction:()=>navigator.clipboard.writeText(t)}),(0,a.jsx)(o.$nd,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:()=>i(!n),label:"Show/Hide"})]})}},17640:()=>{},23237:()=>{},97492:()=>{},31815:()=>{},66671:()=>{},82787:()=>{}}]); +//# sourceMappingURL=2959.f25a9ef1.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/2959.f25a9ef1.chunk.js.map b/web-app/build/static/js/2959.f25a9ef1.chunk.js.map new file mode 100644 index 000000000..fbd9c9c4f --- /dev/null +++ b/web-app/build/static/js/2959.f25a9ef1.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/2959.f25a9ef1.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddAccessRule.tsx","screens/Console/Buckets/ListBuckets/UploadPermissionUtils.ts","screens/Console/ObjectBrowser/BrowserBreadcrumbs.tsx","utils/validationFunctions.ts","screens/Console/Buckets/ListBuckets/UploadFilesButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DetailsListPanel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/IconWithLabel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectMetaData.tsx","screens/Console/Common/FormComponents/DateSelector/utils.ts","screens/Console/Common/FormComponents/DateSelector/DateSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetRetention.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetLegalHoldModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/TagsModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/InspectObject.tsx","screens/Console/ObjectBrowser/RenameLongFilename.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/RestoreFileVersion.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SpecificVersionPill.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/FileVersionItem.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteNonCurrent.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/DeleteSelectedVersions.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsTable.tsx","screens/Console/ObjectBrowser/FilterObjectsSB.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx","screens/Console/ObjectBrowser/OBHeader.tsx","screens/Console/Buckets/BucketDetails/BrowserHandler.tsx","screens/Console/Common/FormComponents/DaysSelector/DaysSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ShareFile.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewPDF.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileContent.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileModal.tsx","screens/Console/Common/Components/withSuspense.tsx","screens/Console/ObjectBrowser/objectBrowserThunks.ts","screens/Console/ObjectBrowser/utils.ts","screens/Console/Tools/KeyRevealer.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState, Fragment } from \"react\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport {\n AddAccessRuleIcon,\n Button,\n FormLayout,\n Grid,\n InputBox,\n Select,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IAddAccessRule {\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n prefilledRoute?: string;\n}\n\nconst AddAccessRule = ({\n modalOpen,\n onClose,\n bucket,\n prefilledRoute,\n}: IAddAccessRule) => {\n const dispatch = useAppDispatch();\n\n const [prefix, setPrefix] = useState(\"\");\n const [selectedAccess, setSelectedAccess] = useState(\"readonly\");\n\n useEffect(() => {\n if (prefilledRoute) {\n setPrefix(prefilledRoute);\n }\n }, [prefilledRoute]);\n\n const accessOptions = [\n { label: \"readonly\", value: \"readonly\" },\n { label: \"writeonly\", value: \"writeonly\" },\n { label: \"readwrite\", value: \"readwrite\" },\n ];\n\n const resetForm = () => {\n setPrefix(\"\");\n setSelectedAccess(\"readonly\");\n };\n\n const createProcess = () => {\n api.bucket\n .setAccessRuleWithBucket(bucket, {\n prefix: prefix,\n access: selectedAccess,\n })\n .then((res: any) => {\n dispatch(setSnackBarMessage(\"Access Rule added successfully\"));\n onClose();\n })\n .catch((res) => {\n dispatch(setErrorSnackMessage(errorToHandler(res.error)));\n onClose();\n });\n };\n\n return (\n }\n >\n \n {\n setPrefix(e.target.value);\n }}\n tooltip={\n \"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy.\"\n }\n />\n {\n setSelectedAccess(value);\n }}\n label=\"Access\"\n value={selectedAccess}\n options={accessOptions}\n disabled={false}\n helpTip={\n \n Select the desired level of access available to unauthenticated\n Users\n \n }\n helpTipPlacement=\"right\"\n />\n \n \n\n \n \n \n \n );\n};\n\nexport default AddAccessRule;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const extractFileExtn = (resourceStr: string) => {\n //file extensions may contain query string. so exclude query strings !\n return (resourceStr.match(/\\.([^.]*?)(?=\\?|#|$)/) || [])[1];\n};\nexport const getPolicyAllowedFileExtensions = (\n sessionGrants: Record,\n uploadPath: string,\n scopes: string[] = [],\n) => {\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n uploadPath,\n scopes,\n );\n\n //get acceptable files if any in the policy.\n const allowedFileExtensions = sessionGrantWildCards.reduce(\n (acc: string[], cv: string) => {\n const extension: string = extractFileExtn(cv);\n if (extension) {\n acc.push(`.${extension}`); //strict extension matching.\n }\n return acc;\n },\n [],\n );\n\n const uniqueExtensions = [...new Set(allowedFileExtensions)];\n return uniqueExtensions.join(\",\");\n};\n\n// The resource should not have the extensions (*.ext) for the hasPermission to work.\n// so sanitize this and also use to extract the allowed extensions outside of permission check.\nexport const getSessionGrantsWildCard = (\n sessionGrants: Record,\n uploadPath: string,\n scopes: string[] = [],\n) => {\n //get only the path matching grants to reduce processing.\n const grantsWithExtension = Object.keys(sessionGrants).reduce(\n (acc: Record, grantKey: string) => {\n if (extractFileExtn(grantKey) && grantKey.includes(uploadPath)) {\n acc[grantKey] = sessionGrants[grantKey];\n }\n return acc;\n },\n {},\n );\n\n const checkPathsForPermission = (sessionGrantKey: string) => {\n const grantActions = grantsWithExtension[sessionGrantKey];\n const hasScope = grantActions.some((actionKey) =>\n scopes.find((scopeKey) => {\n let wildCardMatch = false;\n const hasWildCard = scopeKey.indexOf(\"*\") !== -1;\n if (hasWildCard) {\n const scopeActionKey = scopeKey.substring(0, scopeKey.length - 1);\n\n wildCardMatch = actionKey.includes(scopeActionKey);\n }\n\n return wildCardMatch || actionKey === scopeKey;\n }),\n );\n\n const sessionGrantKeyPath = sessionGrantKey.substring(\n 0,\n sessionGrantKey.indexOf(\"/*.\"), //start of extension part.\n );\n const isUploadPathMatching =\n sessionGrantKeyPath === `arn:aws:s3:::${uploadPath}`;\n\n const hasGrant =\n isUploadPathMatching && sessionGrantKey !== \"arn:aws:s3:::*\";\n\n return hasScope && hasGrant;\n };\n\n return Object.keys(grantsWithExtension).filter(checkPathsForPermission);\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport styled from \"styled-components\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { safeDecodeURIComponent } from \"../../../common/utils\";\nimport {\n Button,\n CopyIcon,\n NewPathIcon,\n Tooltip,\n Breadcrumbs,\n breakPoints,\n Box,\n} from \"mds\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setVersionsModeEnabled } from \"./objectBrowserSlice\";\nimport { getSessionGrantsWildCard } from \"../Buckets/ListBuckets/UploadPermissionUtils\";\n\nconst CreatePathModal = withSuspense(\n React.lazy(\n () => import(\"../Buckets/ListBuckets/Objects/ListObjects/CreatePathModal\"),\n ),\n);\n\nconst BreadcrumbsMain = styled.div(() => ({\n display: \"flex\",\n \"& .additionalOptions\": {\n paddingRight: \"10px\",\n display: \"flex\",\n alignItems: \"center\",\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n display: \"none\",\n },\n },\n \"& .slashSpacingStyle\": {\n margin: \"0 5px\",\n },\n}));\n\ninterface IObjectBrowser {\n bucketName: string;\n internalPaths: string;\n hidePathButton?: boolean;\n additionalOptions?: React.ReactNode;\n}\n\nconst BrowserBreadcrumbs = ({\n bucketName,\n internalPaths,\n hidePathButton,\n additionalOptions,\n}: IObjectBrowser) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const [createFolderOpen, setCreateFolderOpen] = useState(false);\n const [canCreateSubpath, setCanCreateSubpath] = useState(false);\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\n\n let paths = internalPaths;\n\n if (internalPaths !== \"\") {\n paths = `/${internalPaths}`;\n }\n\n const splitPaths = paths.split(\"/\").filter((path) => path !== \"\");\n const lastBreadcrumbsIndex = splitPaths.length - 1;\n\n const pathToCheckPerms = bucketName + paths || bucketName;\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n pathToCheckPerms,\n putObjectPermScopes,\n );\n\n useEffect(() => {\n setCanCreateSubpath(false);\n Object.keys(sessionGrants).forEach((grant) => {\n grant.includes(pathToCheckPerms) &&\n grant.includes(\"/*\") &&\n setCanCreateSubpath(true);\n });\n }, [pathToCheckPerms, internalPaths, sessionGrants]);\n\n const canCreatePath =\n hasPermission(\n [pathToCheckPerms, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) ||\n anonymousMode ||\n canCreateSubpath;\n\n let breadcrumbsMap = splitPaths.map((objectItem: string, index: number) => {\n const subSplit = `${splitPaths.slice(0, index + 1).join(\"/\")}/`;\n const route = `/browser/${encodeURIComponent(bucketName)}/${\n subSplit ? `${encodeURIComponent(subSplit)}` : ``\n }`;\n\n if (index === lastBreadcrumbsIndex && objectItem === versionedFile) {\n return null;\n }\n\n return (\n \n /\n {index === lastBreadcrumbsIndex ? (\n \n {safeDecodeURIComponent(objectItem) /*Only for display*/}\n \n ) : (\n {\n dispatch(\n setVersionsModeEnabled({ status: false, objectName: \"\" }),\n );\n }}\n >\n {\n safeDecodeURIComponent(\n objectItem,\n ) /*Only for display to preserve */\n }\n \n )}\n \n );\n });\n\n let versionsItem: any[] = [];\n\n if (versionsMode) {\n versionsItem = [\n \n \n /\n {versionedFile} - Versions\n \n ,\n ];\n }\n\n const listBreadcrumbs: any[] = [\n \n {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n }}\n >\n {bucketName}\n \n ,\n ...breadcrumbsMap,\n ...versionsItem,\n ];\n\n const closeAddFolderModal = () => {\n setCreateFolderOpen(false);\n };\n\n const goBackFunction = () => {\n if (versionsMode) {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n } else {\n if (splitPaths.length === 0) {\n navigate(\"/browser\");\n\n return;\n }\n\n const prevPath = splitPaths.slice(0, -1);\n\n navigate(\n `/browser/${bucketName}${\n prevPath.length > 0\n ? `/${encodeURIComponent(`${prevPath.join(\"/\")}/`)}`\n : \"\"\n }`,\n );\n }\n };\n\n return (\n \n \n {createFolderOpen && (\n \n )}\n \n \n \n }\n variant={\"regular\"}\n onClick={() => {\n dispatch(setSnackBarMessage(\"Path copied to clipboard\"));\n }}\n style={{\n width: \"28px\",\n height: \"28px\",\n color: \"#969FA8\",\n border: \"#969FA8 1px solid\",\n marginRight: 5,\n }}\n />\n \n {additionalOptions}\n \n }\n >\n {listBreadcrumbs}\n \n {!hidePathButton && (\n \n {\n setCreateFolderOpen(true);\n }}\n disabled={anonymousMode ? false : rewindEnabled || !canCreatePath}\n icon={}\n style={{\n whiteSpace: \"nowrap\",\n }}\n variant={\"regular\"}\n label={\"Create new path\"}\n />\n \n )}\n \n div\": {\n fontSize: 12,\n fontWeight: \"normal\",\n flexDirection: \"row\",\n flexWrap: \"nowrap\",\n },\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n display: \"flex\",\n },\n }}\n >\n {additionalOptions}\n \n \n );\n};\n\nexport default BrowserBreadcrumbs;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const isVersionedMode = (status: string | undefined) => {\n return status === \"Enabled\" || status === \"Suspended\";\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { CSSObject } from \"styled-components\";\nimport { Button, DropdownSelector, UploadFolderIcon, UploadIcon } from \"mds\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../common/SecureComponent\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState } from \"../../../../store\";\nimport { getSessionGrantsWildCard } from \"./UploadPermissionUtils\";\n\ninterface IUploadFilesButton {\n uploadPath: string;\n bucketName: string;\n forceDisable?: boolean;\n uploadFileFunction: (closeFunction: () => void) => void;\n uploadFolderFunction: (closeFunction: () => void) => void;\n overrideStyles?: CSSObject;\n}\n\nconst UploadFilesButton = ({\n uploadPath,\n bucketName,\n forceDisable = false,\n uploadFileFunction,\n uploadFolderFunction,\n overrideStyles = {},\n}: IUploadFilesButton) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [uploadOptionsOpen, uploadOptionsSetOpen] = useState(false);\n\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n uploadPath,\n putObjectPermScopes,\n );\n\n const openUploadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n uploadOptionsSetOpen(!uploadOptionsOpen);\n setAnchorEl(event.currentTarget);\n };\n const handleCloseUpload = () => {\n setAnchorEl(null);\n };\n\n const uploadObjectAllowed =\n hasPermission(\n [uploadPath, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) || anonymousMode;\n\n const uploadFolderAllowed = hasPermission(\n [bucketName, ...sessionGrantWildCards],\n putObjectPermScopes,\n false,\n true,\n );\n\n const uploadFolderAction = (action: string) => {\n if (action === \"folder\") {\n uploadFolderFunction(handleCloseUpload);\n return;\n }\n\n uploadFileFunction(handleCloseUpload);\n };\n\n const uploadEnabled: boolean = uploadObjectAllowed || uploadFolderAllowed;\n\n return (\n \n \n }\n variant={\"callAction\"}\n disabled={forceDisable || !uploadEnabled}\n sx={overrideStyles}\n />\n \n ,\n value: \"file\",\n disabled: !uploadObjectAllowed || forceDisable,\n },\n {\n label: \"Upload Folder\",\n icon: ,\n value: \"folder\",\n disabled: !uploadFolderAllowed || forceDisable,\n },\n ]}\n selectedOption={\"\"}\n onSelect={(nValue) => uploadFolderAction(nValue)}\n hideTriggerAction={() => {\n uploadOptionsSetOpen(false);\n }}\n open={uploadOptionsOpen}\n anchorEl={anchorEl}\n anchorOrigin={\"end\"}\n useAnchorWidth\n />\n \n );\n};\n\nexport default UploadFilesButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Button, ClosePanelIcon } from \"mds\";\n\ninterface IDetailsListPanel {\n open: boolean;\n className?: string;\n closePanel: () => void;\n children: React.ReactNode;\n}\n\nconst DetailsListPanel = ({\n open,\n closePanel,\n className = \"\",\n children,\n}: IDetailsListPanel) => {\n return (\n \n }\n sx={{\n position: \"absolute\",\n right: 5,\n top: 18,\n padding: 0,\n height: 14,\n \"&:hover:not(:disabled)\": {\n backgroundColor: \"transparent\",\n },\n }}\n />\n {children}\n \n );\n};\n\nexport default DetailsListPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This object contains variables that will be used across form components.\n\nimport React from \"react\";\nimport { Box } from \"mds\";\nimport { replaceUnicodeChar } from \"../../../../../../common/utils\";\n\ninterface IIconWithLabel {\n icon: React.ReactNode;\n strings: string[];\n}\n\nconst IconWithLabel = ({ icon, strings }: IIconWithLabel) => {\n return (\n \n {icon}\n \n {replaceUnicodeChar(strings[strings.length - 1])}\n \n \n );\n};\n\nexport default IconWithLabel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nimport {\n FileBookIcon,\n FileCodeIcon,\n FileConfigIcon,\n FileDbIcon,\n FileFontIcon,\n FileImageIcon,\n FileLockIcon,\n FileMissingIcon,\n FileMusicIcon,\n FileNonType,\n FilePdfIcon,\n FilePptIcon,\n FileTxtIcon,\n FileVideoIcon,\n FileXlsIcon,\n FileZipIcon,\n FolderBrowserIcon,\n} from \"mds\";\nimport IconWithLabel from \"./IconWithLabel\";\n\ninterface IExtToIcon {\n icon: any;\n extensions: string[];\n}\n\nexport const extensionToIcon: IExtToIcon[] = [\n {\n icon: ,\n extensions: [\"mp4\", \"mov\", \"avi\", \"mpeg\", \"mpg\"],\n },\n {\n icon: ,\n extensions: [\"mp3\", \"m4a\", \"aac\"],\n },\n {\n icon: ,\n extensions: [\"pdf\"],\n },\n {\n icon: ,\n extensions: [\"ppt\", \"pptx\"],\n },\n {\n icon: ,\n extensions: [\"xls\", \"xlsx\"],\n },\n {\n icon: ,\n extensions: [\"cer\", \"crt\", \"pem\"],\n },\n {\n icon: ,\n extensions: [\"html\", \"xml\", \"css\", \"py\", \"go\", \"php\", \"cpp\", \"h\", \"java\"],\n },\n {\n icon: ,\n extensions: [\"cfg\", \"yaml\"],\n },\n {\n icon: ,\n extensions: [\"sql\"],\n },\n {\n icon: ,\n extensions: [\"ttf\", \"otf\"],\n },\n {\n icon: ,\n extensions: [\"doc\", \"docx\", \"txt\", \"rtf\"],\n },\n {\n icon: ,\n extensions: [\"zip\", \"rar\", \"tar\", \"gz\"],\n },\n {\n icon: ,\n extensions: [\"epub\", \"mobi\", \"azw\", \"azw3\"],\n },\n {\n icon: ,\n extensions: [\"jpeg\", \"jpg\", \"gif\", \"tiff\", \"png\", \"heic\", \"dng\"],\n },\n];\n\nexport const displayFileIconName = (\n element: string,\n returnOnlyIcon: boolean = false,\n) => {\n let elementString = element;\n let icon = ;\n // Element is a folder\n if (element.endsWith(\"/\")) {\n icon = ;\n elementString = element.slice(0, -1);\n }\n\n const lowercaseElement = element.toLowerCase();\n for (const etc of extensionToIcon) {\n for (const ext of etc.extensions) {\n if (lowercaseElement.endsWith(`.${ext}`)) {\n icon = etc.icon;\n }\n }\n }\n\n if (!element.endsWith(\"/\") && element.indexOf(\".\") < 0) {\n icon = ;\n }\n\n const splitItem = elementString.split(\"/\");\n\n if (returnOnlyIcon) {\n return icon;\n }\n\n return ;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Box } from \"mds\";\nimport { safeDecodeURIComponent } from \"../../../../../../common/utils\";\n\ninterface IObjectMetadata {\n metaData: any;\n}\n\nconst itemRendererFn = (element: any) => {\n return Array.isArray(element)\n ? element.map(safeDecodeURIComponent).join(\", \")\n : safeDecodeURIComponent(element);\n};\n\nconst ObjectMetaData = ({ metaData }: IObjectMetadata) => {\n const metaKeys = Object.keys(metaData);\n\n return (\n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = itemRendererFn(metaData[element]);\n return (\n \n {element}\n
\n {renderItem}\n \n );\n })}\n
\n );\n};\n\nexport default ObjectMetaData;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const months = [\n { value: \"01\", label: \"January\" },\n { value: \"02\", label: \"February\" },\n { value: \"03\", label: \"March\" },\n { value: \"04\", label: \"April\" },\n { value: \"05\", label: \"May\" },\n { value: \"06\", label: \"June\" },\n { value: \"07\", label: \"July\" },\n { value: \"08\", label: \"August\" },\n { value: \"09\", label: \"September\" },\n { value: \"10\", label: \"October\" },\n { value: \"11\", label: \"November\" },\n { value: \"12\", label: \"December\" },\n];\n\nexport const days = Array.from(Array(31), (_, num) => ({\n value: (num + 1).toString(),\n label: (num + 1).toString(),\n}));\n\nconst currentYear = new Date().getFullYear();\n\nexport const years = Array.from(Array(50), (_, numYear) => ({\n value: (numYear + currentYear).toString(),\n label: (numYear + currentYear).toString(),\n}));\n\nexport const validDate = (year: string, month: string, day: string): any[] => {\n const currentDate = Date.parse(`${year}-${month}-${day}`);\n\n if (isNaN(currentDate)) {\n return [false, \"\"];\n }\n\n const parsedMonth = parseInt(month);\n const parsedDay = parseInt(day);\n\n const monthForString = parsedMonth < 10 ? `0${parsedMonth}` : parsedMonth;\n const dayForString = parsedDay < 10 ? `0${parsedDay}` : parsedDay;\n\n const parsedDate = new Date(currentDate).toISOString().split(\"T\")[0];\n const dateString = `${year}-${monthForString}-${dayForString}`;\n\n return [parsedDate === dateString, dateString];\n};\n\n// twoDigitDate gets a two digit string number used for months or days\n// returns \"NaN\" if number is NaN\nexport const twoDigitDate = (num: number): string => {\n return num < 10 ? `0${num}` : `${num}`;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n} from \"react\";\nimport { Box, HelpIcon, InputLabel, Select, Tooltip } from \"mds\";\nimport { days, months, validDate, years } from \"./utils\";\n\ninterface IDateSelectorProps {\n id: string;\n label: string;\n disableOptions?: boolean;\n tooltip?: string;\n borderBottom?: boolean;\n value?: string;\n onDateChange: (date: string, isValid: boolean) => any;\n}\n\nconst DateSelector = forwardRef(\n (\n {\n id,\n label,\n disableOptions = false,\n tooltip = \"\",\n borderBottom = false,\n onDateChange,\n value = \"\",\n }: IDateSelectorProps,\n ref: any,\n ) => {\n useImperativeHandle(ref, () => ({ resetDate }));\n\n const [month, setMonth] = useState(\"\");\n const [day, setDay] = useState(\"\");\n const [year, setYear] = useState(\"\");\n\n useEffect(() => {\n // verify if there is a current value\n // assume is in the format \"2021-12-30\"\n if (value !== \"\") {\n const valueSplit = value.split(\"-\");\n\n setYear(valueSplit[0]);\n setMonth(valueSplit[1]);\n // Turn to single digit to be displayed on dropdown buttons\n setDay(`${parseInt(valueSplit[2])}`);\n }\n }, [value]);\n\n useEffect(() => {\n const [isValid, dateString] = validDate(year, month, day);\n onDateChange(dateString, isValid);\n }, [month, day, year, onDateChange]);\n\n const resetDate = () => {\n setMonth(\"\");\n setDay(\"\");\n setYear(\"\");\n };\n\n const isDateDisabled = () => {\n if (disableOptions) {\n return disableOptions;\n } else {\n return false;\n }\n };\n\n const monthForDropDown = [{ value: \"\", label: \"\" }, ...months];\n const daysForDrop = [{ value: \"\", label: \"\" }, ...days];\n const yearsForDrop = [{ value: \"\", label: \"\" }, ...years];\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n \n \n )}\n \n \n \n {\n setMonth(newValue);\n }}\n options={monthForDropDown}\n label={\"\"}\n disabled={isDateDisabled()}\n />\n\n {\n setDay(newValue);\n }}\n options={daysForDrop}\n label={\"\"}\n disabled={isDateDisabled()}\n />\n\n {\n setYear(newValue);\n }}\n options={yearsForDrop}\n label={\"\"}\n disabled={isDateDisabled()}\n sx={{\n marginBottom: 12,\n }}\n />\n \n \n );\n },\n);\n\nexport default DateSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { Box, Button, FormLayout, Grid, RadioGroup, Switch } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { BucketObject, ObjectRetentionMode } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { twoDigitDate } from \"../../../../Common/FormComponents/DateSelector/utils\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport DateSelector from \"../../../../Common/FormComponents/DateSelector/DateSelector\";\n\ninterface ISetRetentionProps {\n open: boolean;\n closeModalAndRefresh: (updateInfo: boolean) => void;\n objectName: string;\n bucketName: string;\n objectInfo: BucketObject;\n}\n\ninterface IRefObject {\n resetDate: () => void;\n}\n\nconst SetRetention = ({\n open,\n closeModalAndRefresh,\n objectName,\n objectInfo,\n bucketName,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const [statusEnabled, setStatusEnabled] = useState(true);\n const [type, setType] = useState(\"\");\n const [date, setDate] = useState(\"\");\n const [isDateValid, setIsDateValid] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [alreadyConfigured, setAlreadyConfigured] = useState(false);\n\n useEffect(() => {\n if (objectInfo.retention_mode) {\n setType(retentionConfig?.mode || ObjectRetentionMode.Governance);\n setAlreadyConfigured(true);\n }\n // get retention_until_date if defined\n if (objectInfo.retention_until_date) {\n const valueDate = new Date(objectInfo.retention_until_date);\n if (valueDate.toString() !== \"Invalid Date\") {\n const year = valueDate.getFullYear();\n const month = twoDigitDate(valueDate.getMonth() + 1);\n const day = valueDate.getDate();\n if (!isNaN(day) && month !== \"NaN\" && !isNaN(year)) {\n setDate(`${year}-${month}-${day}`);\n }\n }\n setAlreadyConfigured(true);\n }\n }, [objectInfo, retentionConfig?.mode]);\n\n const dateElement = useRef(null);\n\n const dateFieldDisabled = () => {\n return !(statusEnabled && (type === \"governance\" || type === \"compliance\"));\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n const resetForm = () => {\n setStatusEnabled(false);\n setType(ObjectRetentionMode.Governance);\n if (dateElement.current) {\n dateElement.current.resetDate();\n }\n };\n\n const addRetention = (\n selectedObject: string,\n versionId: string | null,\n expireDate: string,\n ) => {\n api.buckets\n .putObjectRetention(\n bucketName,\n {\n prefix: selectedObject,\n version_id: versionId || \"\",\n },\n {\n expires: expireDate,\n mode: type as ObjectRetentionMode,\n },\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const disableRetention = (\n selectedObject: string,\n versionId: string | null,\n ) => {\n api.buckets\n .deleteObjectRetention(bucketName, {\n prefix: selectedObject,\n version_id: versionId || \"\",\n })\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const saveNewRetentionPolicy = () => {\n setIsSaving(true);\n const selectedObject = objectInfo.name || \"\";\n const versionId = objectInfo.version_id || null;\n\n const expireDate =\n !statusEnabled && type === \"governance\" ? \"\" : `${date}T23:59:59Z`;\n\n if (!statusEnabled && type === \"governance\") {\n disableRetention(selectedObject, versionId);\n\n return;\n }\n\n addRetention(selectedObject, versionId, expireDate);\n };\n\n const showSwitcher =\n alreadyConfigured && (type === \"governance\" || type === \"\");\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n ) => {\n onSubmit(e);\n }}\n >\n \n \n Selected Object: {objectName}\n \n {showSwitcher && (\n ) => {\n setStatusEnabled(!statusEnabled);\n }}\n label={\"Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n )}\n {\n setType(e.target.value as ObjectRetentionMode);\n }}\n selectorOptions={[\n { label: \"Governance\", value: ObjectRetentionMode.Governance },\n { label: \"Compliance\", value: ObjectRetentionMode.Compliance },\n ]}\n />\n {\n setIsDateValid(isValid);\n if (isValid) {\n setDate(date);\n }\n }}\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default SetRetention;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { isVersionedMode } from \"../../../../../../utils/validationFunctions\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n\n versioningInfo: BucketVersioningResponse | undefined;\n selectedVersion?: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n versioningInfo,\n selectedVersion = \"\",\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n\n // We close the modal box on access denied.\n if (err.detailedError === \"Access Denied.\") {\n closeDeleteModalAndRefresh(true);\n }\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n const [deleteVersions, setDeleteVersions] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n const recursive = selectedObject.endsWith(\"/\");\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/buckets/${encodeURIComponent(selectedBucket)}/objects?prefix=${encodeURIComponent(selectedObject)}${\n selectedVersion !== \"\"\n ? `&version_id=${encodeURIComponent(selectedVersion)}`\n : `&recursive=${recursive}&all_versions=${deleteVersions}`\n }${bypassGovernance ? \"&bypass=true\" : \"\"}`,\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete:
\n {selectedObject}{\" \"}\n {selectedVersion !== \"\" ? (\n \n
\n
\n Version ID:\n
\n {selectedVersion}\n
\n ) : (\n \"\"\n )}\n ?
\n
\n {isVersionedMode(versioningInfo?.status) &&\n selectedVersion === \"\" && (\n \n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n \n )}\n {canBypass && (deleteVersions || selectedVersion !== \"\") && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n {deleteVersions && (\n \n \n This will remove the object as well as all of its versions,{\" \"}\n
\n This action is irreversible.\n \n
\n Are you sure you want to continue?\n
\n )}\n
\n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Box, Button, FormLayout, Grid, Switch } from \"mds\";\nimport { BucketObject, ObjectLegalHoldStatus } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\n\ninterface ISetRetentionProps {\n open: boolean;\n closeModalAndRefresh: (reload: boolean) => void;\n objectName: string;\n bucketName: string;\n actualInfo: BucketObject;\n}\n\nconst SetLegalHoldModal = ({\n open,\n closeModalAndRefresh,\n objectName,\n bucketName,\n actualInfo,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [legalHoldEnabled, setLegalHoldEnabled] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const versionId = actualInfo.version_id;\n\n useEffect(() => {\n const status = get(actualInfo, \"legal_hold_status\", \"OFF\");\n setLegalHoldEnabled(status === \"ON\");\n }, [actualInfo]);\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setIsSaving(true);\n\n api.buckets\n .putObjectLegalHold(\n bucketName,\n {\n prefix: objectName,\n version_id: versionId || \"\",\n },\n {\n status: legalHoldEnabled\n ? ObjectLegalHoldStatus.Enabled\n : ObjectLegalHoldStatus.Disabled,\n },\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const resetForm = () => {\n setLegalHoldEnabled(false);\n };\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n ) => {\n onSubmit(e);\n }}\n >\n \n \n Object: {bucketName}\n \n ) => {\n setLegalHoldEnabled(!legalHoldEnabled);\n }}\n label={\"Legal Hold Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n tooltip={\n \"To enable this feature you need to enable versioning on the bucket before creation\"\n }\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default SetLegalHoldModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport {\n AddNewTagIcon,\n Button,\n DisabledIcon,\n EditTagIcon,\n InputBox,\n SectionTitle,\n Box,\n Grid,\n Tag,\n FormLayout,\n} from \"mds\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { useSelector } from \"react-redux\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../../common/SecureComponent\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface ITagModal {\n modalOpen: boolean;\n bucketName: string;\n actualInfo: BucketObject;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst DeleteTag = styled.b(({ theme }) => ({\n color: get(theme, \"signalColors.danger\", \"#C83B51\"),\n marginLeft: 5,\n}));\n\nconst AddTagModal = ({\n modalOpen,\n onCloseAndUpdate,\n bucketName,\n actualInfo,\n}: ITagModal) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n const [deleteEnabled, setDeleteEnabled] = useState(false);\n const [deleteKey, setDeleteKey] = useState(\"\");\n const [deleteLabel, setDeleteLabel] = useState(\"\");\n\n const currentTags = actualInfo.tags;\n const currTagKeys = Object.keys(currentTags || {});\n\n const allPathData = actualInfo.name?.split(\"/\");\n const currentItem = allPathData?.pop() || \"\";\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n const verID = distributedSetup ? actualInfo.version_id || \"\" : \"null\";\n\n api.buckets\n .putObjectTags(\n bucketName,\n { prefix: actualInfo.name || \"\", version_id: verID },\n { tags: newTagList },\n )\n .then(() => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSending(false);\n });\n };\n\n const deleteTagProcess = () => {\n const cleanObject: any = { ...currentTags };\n delete cleanObject[deleteKey];\n\n const verID = distributedSetup ? actualInfo.version_id || \"\" : \"null\";\n\n api.buckets\n .putObjectTags(\n bucketName,\n { prefix: actualInfo.name || \"\", version_id: verID },\n { tags: cleanObject },\n )\n .then(() => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSending(false);\n });\n };\n\n const onDeleteTag = (tagKey: string, tag: string) => {\n setDeleteKey(tagKey);\n setDeleteLabel(tag);\n setDeleteEnabled(true);\n };\n\n const cancelDelete = () => {\n setDeleteKey(\"\");\n setDeleteLabel(\"\");\n setDeleteEnabled(false);\n };\n\n const tagsFor = (plural: boolean) => (\n \n Tag{plural ? \"s\" : \"\"} for: {currentItem}\n \n );\n\n return (\n \n {\n onCloseAndUpdate(true);\n }}\n iconColor={deleteEnabled ? \"delete\" : \"default\"}\n titleIcon={deleteEnabled ? : }\n >\n {deleteEnabled ? (\n \n \n {tagsFor(false)}\n Are you sure you want to delete the tag{\" \"}\n \n {deleteKey} : {deleteLabel}\n {\" \"}\n ?\n \n \n \n \n \n \n ) : (\n \n \n \n {tagsFor(true)}\n \n Current Tags:\n
\n {currTagKeys.length === 0 ? (\n \n There are no tags for this object\n \n ) : (\n \n )}\n \n {currTagKeys.map((tagKey: string, index: number) => {\n const tag = get(currentTags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n {\n onDeleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n
\n \n \n \n \n } separator={false}>\n Add New Tag\n \n \n {\n setNewKey(e.target.value);\n }}\n />\n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n \n )}\n \n
\n );\n};\n\nexport default AddTagModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport {\n Button,\n InspectMenuIcon,\n PasswordKeyIcon,\n Switch,\n Grid,\n Box,\n} from \"mds\";\nimport {\n deleteCookie,\n getCookieValue,\n performDownload,\n} from \"../../../../../../common/utils\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport KeyRevealer from \"../../../../Tools/KeyRevealer\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface IInspectObjectProps {\n closeInspectModalAndRefresh: (refresh: boolean) => void;\n inspectOpen: boolean;\n inspectPath: string;\n volumeName: string;\n}\n\nconst InspectObject = ({\n closeInspectModalAndRefresh,\n inspectOpen,\n inspectPath,\n volumeName,\n}: IInspectObjectProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeInspectModalAndRefresh(false);\n const [isEncrypt, setIsEncrypt] = useState(true);\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n const [insFileName, setInsFileName] = useState(\"\");\n\n if (!inspectPath) {\n return null;\n }\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n let basename = document.baseURI.replace(window.location.origin, \"\");\n const urlOfInspectApi = `${window.location.origin}${basename}/api/v1/admin/inspect?volume=${encodeURIComponent(volumeName)}&file=${encodeURIComponent(inspectPath + \"/xl.meta\")}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n }),\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n if (decryptKey === \"\") {\n onClose();\n return;\n }\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n onClose();\n setDecryptionKey(\"\");\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n return (\n \n {!decryptionKey && (\n }\n title={`Inspect Object`}\n onClose={onClose}\n >\n ) => {\n onSubmit(e);\n }}\n >\n Would you like to encrypt {inspectPath}?
\n {\n setIsEncrypt(!isEncrypt);\n }}\n description=\"\"\n />\n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n This will be displayed only once. It cannot be recovered.\n
\n Use secure medium to share this key.\n
\n \n \n \n \n ) : null}\n
\n );\n};\n\nexport default InspectObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button, EditIcon, FormLayout, Grid, InputBox, Switch } from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { useAppDispatch } from \"../../../store\";\nimport { downloadObject } from \"./utils\";\nimport { BucketObject } from \"api/consoleApi\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface IRenameLongFilename {\n open: boolean;\n bucketName: string;\n internalPaths: string;\n currentItem: string;\n actualInfo: BucketObject;\n closeModal: () => void;\n}\n\nconst RenameLongFileName = ({\n open,\n closeModal,\n currentItem,\n internalPaths,\n actualInfo,\n bucketName,\n}: IRenameLongFilename) => {\n const dispatch = useAppDispatch();\n\n const [newFileName, setNewFileName] = useState(currentItem);\n const [acceptLongName, setAcceptLongName] = useState(false);\n\n const doDownload = (e: React.FormEvent) => {\n e.preventDefault();\n downloadObject(dispatch, bucketName, internalPaths, actualInfo);\n closeModal();\n };\n\n return (\n }\n >\n

\n The file you are trying to download has a long name.\n
\n This can cause issues on Windows Systems by trimming the file name after\n download.\n
\n
We recommend to rename the file download\n
\n ) => {\n doDownload(e);\n }}\n >\n \n ) => {\n setNewFileName(event.target.value);\n }}\n label=\"\"\n type={\"text\"}\n value={newFileName}\n error={\n newFileName.length > 200 && !acceptLongName\n ? \"Filename should be less than 200 characters long.\"\n : \"\"\n }\n />\n ) => {\n setAcceptLongName(event.target.checked);\n if (event.target.checked) {\n setNewFileName(currentItem);\n }\n }}\n label={\"Use Original Name\"}\n />\n \n 200 && !acceptLongName}\n label={\"Download File\"}\n />\n \n \n \n \n );\n};\n\nexport default RenameLongFileName;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport {\n ActionsList,\n Box,\n Button,\n DeleteIcon,\n DownloadIcon,\n Grid,\n InspectMenuIcon,\n LegalHoldIcon,\n Loader,\n MetadataIcon,\n ObjectInfoIcon,\n PreviewIcon,\n RetentionIcon,\n ShareIcon,\n SimpleHeader,\n TagsIcon,\n VersionsIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { BucketObject, BucketVersioningResponse } from \"api/consoleApi\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport {\n niceBytes,\n niceBytesInt,\n niceDaysInt,\n} from \"../../../../../../common/utils\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport { selDistSet } from \"../../../../../../systemSlice\";\nimport {\n setLoadingObjectInfo,\n setLoadingVersions,\n setSelectedVersion,\n setVersionsModeEnabled,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { displayFileIconName } from \"./utils\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport ObjectMetaData from \"../ObjectDetails/ObjectMetaData\";\nimport ShareFile from \"../ObjectDetails/ShareFile\";\nimport SetRetention from \"../ObjectDetails/SetRetention\";\nimport DeleteObject from \"../ListObjects/DeleteObject\";\nimport SetLegalHoldModal from \"../ObjectDetails/SetLegalHoldModal\";\nimport TagsModal from \"../ObjectDetails/TagsModal\";\nimport InspectObject from \"./InspectObject\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst emptyFile: BucketObject = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: 0,\n tags: {},\n version_id: undefined,\n};\n\ninterface IObjectDetailPanelProps {\n internalPaths: string;\n bucketName: string;\n versioningInfo: BucketVersioningResponse;\n locking: boolean | undefined;\n onClosePanel: (hardRefresh: boolean) => void;\n}\n\nconst ObjectDetailPanel = ({\n internalPaths,\n bucketName,\n versioningInfo,\n locking,\n onClosePanel,\n}: IObjectDetailPanelProps) => {\n const dispatch = useAppDispatch();\n\n const distributedSetup = useSelector(selDistSet);\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion,\n );\n const loadingObjectInfo = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjectInfo,\n );\n\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [retentionModalOpen, setRetentionModalOpen] = useState(false);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [legalholdOpen, setLegalholdOpen] = useState(false);\n const [inspectModalOpen, setInspectModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [allInfoElements, setAllInfoElements] = useState([]);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [totalVersionsSize, setTotalVersionsSize] = useState(0);\n const [longFileOpen, setLongFileOpen] = useState(false);\n const [metaData, setMetaData] = useState(null);\n const [loadMetadata, setLoadingMetadata] = useState(false);\n\n const internalPathsDecoded = internalPaths || \"\";\n const allPathData = internalPathsDecoded.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo && actualInfo.name) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (distributedSetup && allInfoElements && allInfoElements.length >= 1) {\n let infoElement =\n allInfoElements.find((el: BucketObject) => el.is_latest) || emptyFile;\n\n if (selectedVersion !== \"\") {\n infoElement =\n allInfoElements.find(\n (el: BucketObject) => el.version_id === selectedVersion,\n ) || emptyFile;\n }\n\n if (!infoElement.is_delete_marker) {\n setLoadingMetadata(true);\n }\n\n setActualInfo(infoElement);\n }\n }, [selectedVersion, distributedSetup, allInfoElements]);\n\n useEffect(() => {\n if (loadingObjectInfo && internalPaths !== \"\") {\n api.buckets\n .listObjects(bucketName, {\n prefix: internalPaths,\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result: BucketObject[] = res.data.objects || [];\n if (distributedSetup) {\n setAllInfoElements(result);\n setVersions(result);\n\n const tVersionSize = result.reduce(\n (acc: number, currValue: BucketObject): number => {\n if (currValue?.size) {\n return acc + currValue.size;\n }\n return acc;\n },\n 0,\n );\n\n setTotalVersionsSize(tVersionSize);\n } else {\n const resInfo = result[0];\n\n setActualInfo(resInfo);\n setVersions([]);\n\n if (!resInfo.is_delete_marker) {\n setLoadingMetadata(true);\n }\n }\n\n dispatch(setLoadingObjectInfo(false));\n })\n .catch((err) => {\n console.error(\"Error loading object details\", err.error);\n dispatch(setLoadingObjectInfo(false));\n });\n }\n }, [\n loadingObjectInfo,\n bucketName,\n internalPaths,\n dispatch,\n distributedSetup,\n selectedVersion,\n ]);\n\n useEffect(() => {\n if (loadMetadata && internalPaths !== \"\") {\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: internalPaths,\n versionID: actualInfo?.version_id || \"\",\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n\n setMetaData(metadata);\n setLoadingMetadata(false);\n })\n .catch((err) => {\n console.error(\"Error Getting Metadata Status: \", err.detailedError);\n setLoadingMetadata(false);\n });\n }\n }, [bucketName, internalPaths, loadMetadata, actualInfo?.version_id]);\n\n let tagKeys: string[] = [];\n\n if (actualInfo && actualInfo.tags) {\n tagKeys = Object.keys(actualInfo.tags);\n }\n\n const openRetentionModal = () => {\n setRetentionModalOpen(true);\n };\n\n const closeRetentionModal = (updateInfo: boolean) => {\n setRetentionModalOpen(false);\n if (updateInfo) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n };\n\n const closeFileOpen = () => {\n setLongFileOpen(false);\n };\n\n const closeDeleteModal = (closeAndReload: boolean) => {\n setDeleteOpen(false);\n\n if (closeAndReload && selectedVersion === \"\") {\n onClosePanel(true);\n } else {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeAddTagModal = (reloadObjectData: boolean) => {\n setTagModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeInspectModal = (reloadObjectData: boolean) => {\n setInspectModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeLegalholdModal = (reload: boolean) => {\n setLegalholdOpen(false);\n if (reload) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const loaderForContainer = (\n
\n \n
\n );\n\n if (!actualInfo) {\n if (loadingObjectInfo) {\n return loaderForContainer;\n }\n\n return null;\n }\n\n const objectName =\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name;\n\n const objectResources = [\n bucketName,\n currentItem,\n [bucketName, actualInfo.name].join(\"/\"),\n ];\n const canSetLegalHold = hasPermission(bucketName, [\n IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canSetTags = hasPermission(objectResources, [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const canChangeRetention = hasPermission(\n objectResources,\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n true,\n );\n const canInspect = hasPermission(objectResources, [\n IAM_SCOPES.ADMIN_INSPECT_DATA,\n ]);\n const canChangeVersioning = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canGetObject = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n const canDelete = hasPermission(\n [bucketName, currentItem, [bucketName, actualInfo.name].join(\"/\")],\n [IAM_SCOPES.S3_DELETE_OBJECT],\n );\n\n let objectType: AllowedPreviews = previewObjectType(metaData, currentItem);\n\n const multiActionButtons = [\n {\n action: () => {\n downloadObject(dispatch, bucketName, internalPaths, actualInfo);\n },\n label: \"Download\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Download this Object\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download this object\",\n ),\n },\n {\n action: () => {\n shareObject();\n },\n label: \"Share\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Share this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"share this object\",\n ),\n },\n {\n action: () => {\n setPreviewOpen(true);\n },\n label: \"Preview\",\n disabled:\n !!actualInfo.is_delete_marker ||\n (objectType === \"none\" && !canGetObject),\n icon: ,\n tooltip: canGetObject\n ? \"Preview this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"preview this object\",\n ),\n },\n {\n action: () => {\n setLegalholdOpen(true);\n },\n label: \"Legal Hold\",\n disabled:\n !locking ||\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canSetLegalHold ||\n selectedVersion !== \"\",\n icon: ,\n tooltip: canSetLegalHold\n ? locking\n ? \"Change Legal Hold rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Legal Hold\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD, IAM_SCOPES.S3_PUT_ACTIONS],\n \"change legal hold settings for this object\",\n ),\n },\n {\n action: openRetentionModal,\n label: \"Retention\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canChangeRetention ||\n selectedVersion !== \"\" ||\n !locking,\n icon: ,\n tooltip: canChangeRetention\n ? locking\n ? \"Change Retention rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Retention Rules\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"change Retention Rules for this object\",\n ),\n },\n {\n action: () => {\n setTagModalOpen(true);\n },\n label: \"Tags\",\n disabled:\n !!actualInfo.is_delete_marker || selectedVersion !== \"\" || !canSetTags,\n icon: ,\n tooltip: canSetTags\n ? \"Change Tags for this File\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"set Tags on this object\",\n ),\n },\n {\n action: () => {\n setInspectModalOpen(true);\n },\n label: \"Inspect\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n selectedVersion !== \"\" ||\n !canInspect,\n icon: ,\n tooltip: canInspect\n ? \"Inspect this file\"\n : permissionTooltipHelper(\n [IAM_SCOPES.ADMIN_INSPECT_DATA],\n \"inspect this file\",\n ),\n },\n {\n action: () => {\n dispatch(\n setVersionsModeEnabled({\n status: !versionsMode,\n objectName: objectName,\n }),\n );\n },\n label: versionsMode ? \"Hide Object Versions\" : \"Display Object Versions\",\n icon: ,\n disabled:\n !distributedSetup ||\n !(actualInfo.version_id && actualInfo.version_id !== \"null\") ||\n !canChangeVersioning,\n tooltip: canChangeVersioning\n ? actualInfo.version_id && actualInfo.version_id !== \"null\"\n ? \"Display Versions for this file\"\n : \"\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"display all versions of this object\",\n ),\n },\n ];\n\n const calculateLastModifyTime = (lastModified: string) => {\n const currentTime = new Date();\n const modifiedTime = new Date(lastModified);\n\n const difTime = currentTime.getTime() - modifiedTime.getTime();\n\n const formatTime = niceDaysInt(difTime, \"ms\");\n\n return formatTime.trim() !== \"\" ? `${formatTime} ago` : \"Just now\";\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {retentionModalOpen && actualInfo && (\n \n )}\n {deleteOpen && (\n \n )}\n {legalholdOpen && actualInfo && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {tagModalOpen && actualInfo && (\n \n )}\n {inspectModalOpen && actualInfo && (\n \n )}\n {longFileOpen && actualInfo && (\n \n )}\n\n {loadingObjectInfo ? (\n {loaderForContainer}\n ) : (\n \n \n {displayFileIconName(objectName || \"\", true)}\n {objectName}\n \n }\n items={multiActionButtons}\n />\n \n \n \n }\n iconLocation={\"start\"}\n fullWidth\n variant={\"secondary\"}\n onClick={() => {\n setDeleteOpen(true);\n }}\n disabled={\n selectedVersion === \"\" && actualInfo.is_delete_marker\n }\n sx={{\n width: \"calc(100% - 44px)\",\n margin: \"8px 0\",\n }}\n label={`Delete${selectedVersion !== \"\" ? \" version\" : \"\"}`}\n />\n \n \n \n } label={\"Object Info\"} />\n \n Name:\n
\n
{objectName}
\n
\n {selectedVersion !== \"\" && (\n \n Version ID:\n
\n {selectedVersion}\n
\n )}\n \n Size:\n
\n {niceBytes(`${actualInfo.size || \"0\"}`)}\n
\n {actualInfo.version_id &&\n actualInfo.version_id !== \"null\" &&\n selectedVersion === \"\" && (\n \n Versions:\n
\n {versions.length} version{versions.length !== 1 ? \"s\" : \"\"},{\" \"}\n {niceBytesInt(totalVersionsSize)}\n
\n )}\n {selectedVersion === \"\" && (\n \n Last Modified:\n
\n {calculateLastModifyTime(actualInfo.last_modified || \"\")}\n
\n )}\n \n ETAG:\n
\n {actualInfo.etag || \"N/A\"}\n
\n \n Tags:\n
\n {tagKeys.length === 0\n ? \"N/A\"\n : tagKeys.map((tagKey, index) => {\n return (\n \n {tagKey}:{get(actualInfo, `tags.${tagKey}`, \"\")}\n {index < tagKeys.length - 1 ? \", \" : \"\"}\n \n );\n })}\n
\n \n \n \n Legal Hold:\n
\n {actualInfo.legal_hold_status ? \"On\" : \"Off\"}\n
\n \n
\n \n \n \n Retention Policy:\n
\n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" ? (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n ) : (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n )}\n \n
\n \n
\n {!actualInfo.is_delete_marker && (\n \n } />\n \n {actualInfo && metaData ? (\n \n ) : null}\n \n \n )}\n \n )}\n
\n );\n};\n\nexport default ObjectDetailPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Box, RecoverIcon } from \"mds\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { restoreLocalObjectList } from \"../../../../ObjectBrowser/objectBrowserSlice\";\n\ninterface IRestoreFileVersion {\n restoreOpen: boolean;\n bucketName: string;\n versionToRestore: BucketObject;\n objectPath: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst RestoreFileVersion = ({\n versionToRestore,\n bucketName,\n objectPath,\n restoreOpen,\n onCloseAndUpdate,\n}: IRestoreFileVersion) => {\n const dispatch = useAppDispatch();\n const [restoreLoading, setRestoreLoading] = useState(false);\n\n const restoreVersion = () => {\n setRestoreLoading(true);\n\n api.buckets\n .putObjectRestore(bucketName, {\n prefix: objectPath,\n version_id: versionToRestore.version_id || \"\",\n })\n .then(() => {\n setRestoreLoading(false);\n onCloseAndUpdate(true);\n dispatch(\n restoreLocalObjectList({\n prefix: objectPath,\n objectInfo: versionToRestore,\n }),\n );\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setRestoreLoading(false);\n });\n };\n\n return (\n }\n onConfirm={restoreVersion}\n confirmButtonProps={{\n variant: \"secondary\",\n disabled: restoreLoading,\n }}\n onClose={() => {\n onCloseAndUpdate(false);\n }}\n confirmationContent={\n \n Are you sure you want to restore
\n {objectPath}
with Version ID:\n
\n {versionToRestore.version_id}?\n
\n }\n />\n );\n};\n\nexport default RestoreFileVersion;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ninterface ISpecificVersionPillProps {\n type: \"null\" | \"current\" | \"deleted\";\n}\n\nconst SpecificVersionPill = ({ type }: ISpecificVersionPillProps) => {\n let bgColor = \"#000\";\n let message = \"\";\n\n switch (type) {\n case \"null\":\n bgColor = \"#07193E\";\n message = \"NULL VERSION\";\n break;\n case \"deleted\":\n bgColor = \"#868686\";\n message = \"DELETED\";\n break;\n default:\n bgColor = \"#174551\";\n message = \"CURRENT VERSION\";\n }\n\n return (\n \n {message}\n \n );\n};\n\nexport default SpecificVersionPill;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { DateTime } from \"luxon\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { displayFileIconName } from \"../ListObjects/utils\";\nimport {\n DownloadIcon,\n PreviewIcon,\n RecoverIcon,\n ShareIcon,\n IconButton,\n Tooltip,\n Grid,\n Checkbox,\n} from \"mds\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport SpecificVersionPill from \"./SpecificVersionPill\";\nimport { BucketObject } from \"api/consoleApi\";\n\ninterface IFileVersionItem {\n fileName: string;\n versionInfo: BucketObject;\n index: number;\n isSelected?: boolean;\n checkable: boolean;\n isChecked: boolean;\n onCheck: (versionID: string) => void;\n onShare: (versionInfo: BucketObject) => void;\n onDownload: (versionInfo: BucketObject) => void;\n onRestore: (versionInfo: BucketObject) => void;\n onPreview: (versionInfo: BucketObject) => void;\n globalClick: (versionInfo: BucketObject) => void;\n key: any;\n style: any;\n}\n\nconst FileVersionStyled = styled.div(({ theme }) => {\n return {\n \"&:before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n height: \"calc(100% + 2px)\",\n backgroundColor: get(theme, \"borderColor\", \"#F8F8F8\"),\n left: \"24px\",\n },\n \"& .mainFileVersionItem\": {\n borderBottom: `${get(theme, \"borderColor\", \"#F8F8F8\")} 1px solid`,\n padding: \"1rem 0\",\n margin: \"0 0.5rem 0 2.5rem\",\n cursor: \"pointer\",\n \"&.deleted\": {\n color: \"#868686\",\n },\n },\n \"& .intermediateLayer\": {\n margin: \"0 1.5rem 0 1.5rem\",\n \"&:hover, &.selected\": {\n backgroundColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n \"& > div\": {\n borderBottomColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n },\n },\n },\n \"& .versionContainer\": {\n fontSize: 16,\n fontWeight: \"bold\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg.min-icon\": {\n width: 18,\n height: 18,\n minWidth: 18,\n minHeight: 18,\n marginRight: 10,\n },\n },\n \"& .buttonContainer\": {\n textAlign: \"right\",\n \"& button\": {\n marginLeft: \"1.5rem\",\n },\n },\n \"& .versionID\": {\n fontSize: \"12px\",\n margin: \"2px 0\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n },\n \"& .versionData\": {\n marginRight: \"10px\",\n fontSize: 12,\n color: \"#868686\",\n },\n \"@media (max-width: 600px)\": {\n \"& .buttonContainer\": {\n \"& button\": {\n marginLeft: \"5px\",\n },\n },\n },\n \"@media (max-width: 799px)\": {\n \"&:before\": {\n display: \"none\",\n },\n \"& .mainFileVersionItem\": {\n padding: \"5px 0px\",\n margin: 0,\n },\n \"& .intermediateLayer\": {\n margin: 0,\n \"&:hover, &.selected\": {\n backgroundColor: \"transparent\",\n \"& > div\": {\n borderBottomColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n },\n },\n },\n \"& .versionContainer\": {\n fontSize: 14,\n \"& svg.min-icon\": {\n display: \"none\",\n },\n },\n \"& .versionData\": {\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n \"& .collapsableInfo\": {\n display: \"flex\",\n flexDirection: \"column\",\n },\n \"& .versionItem\": {\n display: \"none\",\n },\n },\n };\n});\n\nconst FileVersionItem = ({\n fileName,\n versionInfo,\n isSelected,\n checkable,\n isChecked,\n onCheck,\n onShare,\n onDownload,\n onRestore,\n onPreview,\n globalClick,\n index,\n key,\n style,\n}: IFileVersionItem) => {\n const disableButtons = versionInfo.is_delete_marker;\n\n const versionItemButtons = [\n {\n icon: ,\n action: onPreview,\n tooltip: \"Preview\",\n },\n {\n icon: ,\n action: onDownload,\n tooltip: \"Download this version\",\n },\n {\n icon: ,\n action: onShare,\n tooltip: \"Share this version\",\n },\n {\n icon: ,\n action: onRestore,\n tooltip: \"Restore this version\",\n },\n ];\n\n let pill: \"deleted\" | \"current\" | \"null\" | null = null;\n\n if (versionInfo.is_delete_marker) {\n pill = \"deleted\";\n } else if (versionInfo.is_latest) {\n pill = \"current\";\n } else if (versionInfo.version_id === \"null\") {\n pill = \"null\";\n }\n\n let lastModified = DateTime.now();\n\n if (versionInfo.last_modified) {\n lastModified = DateTime.fromISO(\n versionInfo.last_modified,\n ) as DateTime;\n }\n\n return (\n \n {\n globalClick(versionInfo);\n }}\n key={key}\n style={style}\n >\n \n \n \n \n \n {checkable && (\n {\n e.stopPropagation();\n onCheck(versionInfo.version_id || \"\");\n }}\n value={versionInfo.version_id || \"\"}\n disabled={versionInfo.is_delete_marker}\n sx={{\n width: \"initial\",\n }}\n />\n )}\n {displayFileIconName(fileName, true)} v{index.toString()}\n \n {pill && }\n \n \n \n {versionItemButtons.map((button, index) => {\n return (\n \n {\n e.stopPropagation();\n if (!disableButtons) {\n button.action(versionInfo);\n } else {\n e.preventDefault();\n }\n }}\n sx={{\n backgroundColor: \"#F8F8F8\",\n borderRadius: \"100%\",\n width: \"28px\",\n height: \"28px\",\n padding: \"5px\",\n \"& .min-icon\": {\n width: \"14px\",\n height: \"14px\",\n },\n }}\n >\n {button.icon}\n \n \n );\n })}\n \n \n \n \n {versionInfo.version_id !== \"null\" ? versionInfo.version_id : \"-\"}\n \n \n \n Last modified:{\" \"}\n {lastModified.toFormat(\"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\")}\n \n \n Size: {niceBytes(`${versionInfo.size || \"0\"}`)}\n \n \n \n \n \n \n );\n};\n\nexport default FileVersionItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\n\nimport { ConfirmDeleteIcon, Switch, Grid, InputBox } from \"mds\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteNonCurrentProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteNonCurrentVersions = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n}: IDeleteNonCurrentProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [typeConfirm, setTypeConfirm] = useState(\"\");\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n useEffect(() => {\n if (deleteLoading) {\n api.buckets\n .deleteObject(selectedBucket, {\n prefix: selectedObject,\n non_current_versions: true,\n bypass: bypassGovernance,\n })\n .then(() => {\n closeDeleteModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setDeleteLoading(false);\n });\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n dispatch,\n selectedObject,\n selectedBucket,\n bypassGovernance,\n ]);\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={() => closeDeleteModalAndRefresh(false)}\n confirmButtonProps={{\n disabled: typeConfirm !== \"YES, PROCEED\" || deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete all the non-current versions for:{\" \"}\n {selectedObject}?
\n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n
\n To continue please type YES, PROCEED in the box.\n
\n
\n \n ) => {\n setTypeConfirm(event.target.value);\n }}\n label=\"\"\n value={typeConfirm}\n />\n \n
\n }\n />\n );\n};\n\nexport default DeleteNonCurrentVersions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteSelectedVersionsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedVersions: string[];\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedVersions,\n selectedObject,\n}: IDeleteSelectedVersionsProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n const onClose = () => closeDeleteModalAndRefresh(false);\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n useEffect(() => {\n if (deleteLoading) {\n const selectedObjectsRequest = selectedVersions.map((versionID) => {\n return {\n path: selectedObject,\n versionID: versionID,\n recursive: false,\n };\n });\n\n if (selectedObjectsRequest.length > 0) {\n api.buckets\n .deleteMultipleObjects(selectedBucket, selectedObjectsRequest, {\n all_versions: false,\n bypass: bypassGovernance,\n })\n .then(() => {\n setDeleteLoading(false);\n closeDeleteModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setDeleteLoading(false);\n });\n }\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n selectedBucket,\n selectedObject,\n selectedVersions,\n bypassGovernance,\n dispatch,\n ]);\n\n if (!selectedVersions) {\n return null;\n }\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedVersions.length}{\" \"}\n versions for {selectedObject}?\n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport {\n breakPoints,\n Button,\n DeleteIcon,\n DeleteNonCurrentIcon,\n Grid,\n ProgressBar,\n ScreenTitle,\n Select,\n SelectMultipleIcon,\n VersionsIcon,\n} from \"mds\";\nimport ShareFile from \"./ShareFile\";\n\nimport { niceBytesInt } from \"../../../../../../common/utils\";\nimport RestoreFileVersion from \"./RestoreFileVersion\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport FileVersionItem from \"./FileVersionItem\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport DeleteNonCurrent from \"../ListObjects/DeleteNonCurrent\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport DeleteSelectedVersions from \"./DeleteSelectedVersions\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport {\n setLoadingObjectInfo,\n setLoadingVersions,\n setSelectedVersion,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { List, ListRowProps } from \"react-virtualized\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IVersionsNavigatorProps {\n internalPaths: string;\n bucketName: string;\n}\n\nconst emptyFile: BucketObject = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: 0,\n tags: {},\n version_id: undefined,\n};\n\nconst VersionsNavigator = ({\n internalPaths,\n bucketName,\n}: IVersionsNavigatorProps) => {\n const dispatch = useAppDispatch();\n\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions,\n );\n const loadingVersions = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersions,\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion,\n );\n\n const distributedSetup = useSelector(selDistSet);\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [restoreVersionOpen, setRestoreVersionOpen] = useState(false);\n const [restoreVersion, setRestoreVersion] = useState(\n null,\n );\n const [sortValue, setSortValue] = useState(\"date\");\n const [previewOpen, setPreviewOpen] = useState(false);\n const [deleteNonCurrentOpen, setDeleteNonCurrentOpen] =\n useState(false);\n const [selectEnabled, setSelectEnabled] = useState(false);\n const [selectedItems, setSelectedItems] = useState([]);\n const [delSelectedVOpen, setDelSelectedVOpen] = useState(false);\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo && actualInfo.name) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (!loadingVersions && !actualInfo) {\n dispatch(setLoadingVersions(true));\n }\n }, [loadingVersions, actualInfo, dispatch]);\n\n useEffect(() => {\n if (loadingVersions && internalPaths !== \"\") {\n api.buckets\n .listObjects(bucketName, {\n prefix: internalPaths,\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result = get(res.data, \"objects\", []);\n\n // Filter the results prefixes as API can return more files than expected.\n const filteredPrefixes = result.filter(\n (item: BucketObject) => item.name === internalPaths,\n );\n\n if (distributedSetup) {\n setActualInfo(\n filteredPrefixes.find((el: BucketObject) => el.is_latest) ||\n emptyFile,\n );\n setVersions(filteredPrefixes);\n } else {\n setActualInfo(filteredPrefixes[0]);\n setVersions([]);\n }\n\n dispatch(setLoadingVersions(false));\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n dispatch(setLoadingVersions(false));\n });\n }\n }, [loadingVersions, bucketName, internalPaths, dispatch, distributedSetup]);\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n setPreviewOpen(false);\n };\n\n const onShareItem = (item: BucketObject) => {\n setObjectToShare(item);\n shareObject();\n };\n\n const onPreviewItem = (item: BucketObject) => {\n setObjectToShare(item);\n setPreviewOpen(true);\n };\n\n const onRestoreItem = (item: BucketObject) => {\n setRestoreVersion(item);\n setRestoreVersionOpen(true);\n };\n\n const onDownloadItem = (item: BucketObject) => {\n downloadObject(dispatch, bucketName, internalPaths, item);\n };\n\n const onGlobalClick = (item: BucketObject) => {\n dispatch(setSelectedVersion(item.version_id || \"\"));\n };\n\n const filteredRecords = versions.filter((version) => {\n if (version.version_id) {\n return version.version_id.includes(searchVersions);\n }\n return false;\n });\n\n const closeRestoreModal = (reloadObjectData: boolean) => {\n setRestoreVersionOpen(false);\n setRestoreVersion(null);\n\n if (reloadObjectData) {\n dispatch(setLoadingVersions(true));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeDeleteNonCurrent = (reloadAfterDelete: boolean) => {\n setDeleteNonCurrentOpen(false);\n\n if (reloadAfterDelete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeSelectedVersions = (reloadOnComplete: boolean) => {\n setDelSelectedVOpen(false);\n\n if (reloadOnComplete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n setSelectedItems([]);\n }\n };\n\n const totalSpace = versions.reduce((acc: number, currValue: BucketObject) => {\n if (currValue.size) {\n return acc + currValue.size;\n }\n return acc;\n }, 0);\n\n filteredRecords.sort((a, b) => {\n switch (sortValue) {\n case \"size\":\n if (a.size && b.size) {\n if (a.size < b.size) {\n return -1;\n }\n if (a.size > b.size) {\n return 1;\n }\n return 0;\n }\n return 0;\n default:\n const dateA = new Date(a.last_modified || \"\").getTime();\n const dateB = new Date(b.last_modified || \"\").getTime();\n\n if (dateA < dateB) {\n return 1;\n }\n if (dateA > dateB) {\n return -1;\n }\n return 0;\n }\n });\n\n const onCheckVersion = (selectedVersion: string) => {\n if (selectedItems.includes(selectedVersion)) {\n const filteredItems = selectedItems.filter(\n (element) => element !== selectedVersion,\n );\n\n setSelectedItems(filteredItems);\n\n return;\n }\n\n const cloneState = [...selectedItems];\n cloneState.push(selectedVersion);\n\n setSelectedItems(cloneState);\n };\n\n const rowRenderer = ({\n key, // Unique key within array of rows\n index, // Index of row within collection\n isScrolling, // The List is currently being scrolled\n isVisible, // This row is visible within the List (eg it is not an overscanned row)\n style, // Style object to be applied to row (to position it)\n }: ListRowProps) => {\n const versOrd = versions.length - index;\n return (\n \n );\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {restoreVersionOpen && actualInfo && restoreVersion && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {deleteNonCurrentOpen && (\n \n )}\n {delSelectedVOpen && (\n \n )}\n \n {!actualInfo && (\n \n \n \n )}\n\n {actualInfo && (\n \n \n \n \n \n \n \n \n }\n title={`${\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name\n } Versions`}\n subTitle={\n \n \n \n {versions.length} Version\n {versions.length === 1 ? \"\" : \"s\"}   \n \n \n \n {niceBytesInt(totalSpace)}\n \n \n }\n actions={\n \n \n {\n setSelectEnabled(!selectEnabled);\n }}\n icon={}\n variant={selectEnabled ? \"callAction\" : \"regular\"}\n style={{ marginRight: 8 }}\n />\n \n {selectEnabled && (\n \n {\n setDelSelectedVOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 8 }}\n disabled={selectedItems.length === 0}\n />\n \n )}\n \n {\n setDeleteNonCurrentOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 15 }}\n disabled={versions.length <= 1}\n />\n \n {\n setSortValue(newValue);\n }}\n noLabelMinWidth\n />\n \n }\n bottomBorder={false}\n />\n \n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" && (\n // @ts-ignore\n \n )}\n \n \n )}\n \n \n );\n};\n\nexport default VersionsNavigator;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { DateTime } from \"luxon\";\nimport { BucketObjectItem } from \"./types\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport { displayFileIconName } from \"./utils\";\n\n// Functions\n\nexport const displayParsedDate = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\")) {\n return \"\";\n }\n\n const currTime = DateTime.now();\n const objectTime = DateTime.fromISO(object.last_modified);\n\n const isToday =\n currTime.hasSame(objectTime, \"day\") &&\n currTime.hasSame(objectTime, \"month\") &&\n currTime.hasSame(objectTime, \"year\");\n\n if (isToday) {\n return `Today, ${objectTime.toFormat(\"HH:mm\")}`;\n }\n\n return objectTime.toFormat(\"ccc, LLL dd yyyy HH:mm (ZZZZ)\");\n};\n\nexport const displayNiceBytes = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\") || !object.size) {\n return \"-\";\n }\n return niceBytes(String(object.size));\n};\n\nexport const displayDeleteFlag = (state: boolean) => {\n return state ? \"Yes\" : \"No\";\n};\n\n// Table Props\n\nexport const listModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Last Modified\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n];\n\nexport const rewindModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Object Date\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n {\n label: \"Deleted\",\n elementKey: \"delete_flag\",\n renderFunction: displayDeleteFlag,\n width: 60,\n },\n];\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { listModeColumns, rewindModeColumns } from \"./ListObjectsHelpers\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport {\n setLoadingVersions,\n setObjectDetailsView,\n setReloadObjectsList,\n setSelectedObjects,\n setSelectedObjectView,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport get from \"lodash/get\";\nimport { sortListObjects } from \"../utils\";\nimport { BucketObjectItem } from \"./types\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { DataTable, ItemActions } from \"mds\";\nimport { BucketObject } from \"api/consoleApi\";\n\nconst ListObjectsTable = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [sortDirection, setSortDirection] = useState<\n \"ASC\" | \"DESC\" | undefined\n >(\"ASC\");\n const [currentSortField, setCurrentSortField] = useState(\"name\");\n\n const bucketName = params.bucketName || \"\";\n\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen,\n );\n\n const requestInProgress = useSelector(\n (state: AppState) => state.objectBrowser.requestInProgress,\n );\n\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects,\n );\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects,\n );\n const connectionError = useSelector(\n (state: AppState) => state.objectBrowser.connectionError,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const displayListObjects = hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]);\n\n const filteredRecords = records.filter((b: BucketObjectItem) => {\n if (searchObjects === \"\") {\n return true;\n } else {\n const objectName = b.name.toLowerCase();\n if (objectName.indexOf(searchObjects.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n });\n\n const plSelect = filteredRecords;\n const sortASC = plSelect.sort(sortListObjects(currentSortField));\n\n let payload: BucketObjectItem[] = [];\n\n if (sortDirection === \"ASC\") {\n payload = sortASC;\n } else {\n payload = sortASC.reverse();\n }\n\n const openPath = (object: BucketObject) => {\n const idElement = object.name || \"\";\n const newPath = `/browser/${encodeURIComponent(bucketName)}${\n idElement ? `/${encodeURIComponent(idElement)}` : ``\n }`;\n\n // for anonymous start download\n if (anonymousMode && !object.name?.endsWith(\"/\")) {\n downloadObject(dispatch, bucketName, idElement, object);\n return;\n }\n dispatch(setSelectedObjects([]));\n\n navigate(newPath);\n\n if (!anonymousMode) {\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n }\n dispatch(setSelectedObjectView(idElement));\n };\n const tableActions: ItemActions[] = [\n {\n type: \"view\",\n tooltip: \"View\",\n onClick: openPath,\n sendOnlyId: false,\n },\n ];\n\n const sortChange = (sortData: any) => {\n const newSortDirection = get(sortData, \"sortDirection\", \"DESC\");\n setCurrentSortField(sortData.sortBy);\n setSortDirection(newSortDirection);\n dispatch(setReloadObjectsList(true));\n };\n\n const selectAllItems = () => {\n dispatch(setSelectedObjectView(null));\n\n if (selectedObjects.length === payload.length) {\n dispatch(setSelectedObjects([]));\n return;\n }\n\n const elements = payload.map((item) => item.name);\n dispatch(setSelectedObjects(elements));\n };\n\n const selectListObjects = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedObjects]; // We clone the selectedBuckets array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedBucketsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n dispatch(setSelectedObjects(elements));\n dispatch(setSelectedObjectView(null));\n\n return elements;\n };\n\n let errorMessage =\n !displayListObjects && !anonymousMode\n ? permissionTooltipHelper(\n [IAM_SCOPES.S3_LIST_BUCKET, IAM_SCOPES.S3_ALL_LIST_BUCKET],\n \"view Objects in this bucket\",\n )\n : `This location is empty${\n !rewindEnabled ? \", please try uploading a new file\" : \"\"\n }`;\n\n if (connectionError) {\n errorMessage =\n \"Objects List unavailable. Please review your WebSockets configuration and try again\";\n }\n\n let customPaperHeight = \"calc(100vh - 290px)\";\n\n if (obOnly) {\n customPaperHeight = \"calc(100vh - 315px)\";\n }\n\n return (\n {\n if (payload[index]?.delete_flag) {\n return \"deleted\";\n }\n\n return \"\";\n }}\n sx={{\n minHeight: detailsOpen ? \"100%\" : \"initial\",\n }}\n noBackground\n />\n );\n};\nexport default ListObjectsTable;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { setSearchObjects } from \"./objectBrowserSlice\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\n\nconst FilterObjectsSB = () => {\n const dispatch = useAppDispatch();\n\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects,\n );\n return (\n {\n dispatch(setSearchObjects(value));\n }}\n value={searchObjects}\n />\n );\n};\nexport default FilterObjectsSB;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport {\n AccessRuleIcon,\n ActionsList,\n Badge,\n Box,\n BucketsIcon,\n Button,\n Checkbox,\n DeleteIcon,\n DownloadIcon,\n Grid,\n HistoryIcon,\n PageLayout,\n PreviewIcon,\n RefreshIcon,\n ScreenTitle,\n ShareIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { BucketQuota } from \"api/consoleApi\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport { useDropzone } from \"react-dropzone\";\nimport { DateTime } from \"luxon\";\nimport { niceBytesInt } from \"../../../../../../common/utils\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../../../systemSlice\";\nimport { isVersionedMode } from \"../../../../../../utils/validationFunctions\";\nimport {\n extractFileExtn,\n getPolicyAllowedFileExtensions,\n getSessionGrantsWildCard,\n} from \"../../UploadPermissionUtils\";\nimport {\n makeid,\n removeTrace,\n storeCallForObjectWithID,\n storeFormDataWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n openList,\n resetMessages,\n resetRewind,\n setAnonymousAccessOpen,\n setDownloadRenameModal,\n setLoadingVersions,\n setNewObject,\n setObjectDetailsView,\n setPreviewOpen,\n setReloadObjectsList,\n setRetentionConfig,\n setSelectedObjects,\n setSelectedObjectView,\n setSelectedPreview,\n setShareFileModalOpen,\n setShowDeletedObjects,\n setVersionsModeEnabled,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n setBucketInfo,\n} from \"../../../BucketDetails/bucketDetailsSlice\";\nimport {\n downloadSelected,\n openAnonymousAccess,\n openPreview,\n openShare,\n} from \"../../../../ObjectBrowser/objectBrowserThunks\";\nimport withSuspense from \"../../../../Common/Components/withSuspense\";\nimport UploadFilesButton from \"../../UploadFilesButton\";\nimport DetailsListPanel from \"./DetailsListPanel\";\nimport ObjectDetailPanel from \"./ObjectDetailPanel\";\nimport VersionsNavigator from \"../ObjectDetails/VersionsNavigator\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport ListObjectsTable from \"./ListObjectsTable\";\nimport FilterObjectsSB from \"../../../../ObjectBrowser/FilterObjectsSB\";\nimport AddAccessRule from \"../../../BucketDetails/AddAccessRule\";\n\nconst DeleteMultipleObjects = withSuspense(\n React.lazy(() => import(\"./DeleteMultipleObjects\")),\n);\nconst ShareFile = withSuspense(\n React.lazy(() => import(\"../ObjectDetails/ShareFile\")),\n);\nconst RewindEnable = withSuspense(React.lazy(() => import(\"./RewindEnable\")));\nconst PreviewFileModal = withSuspense(\n React.lazy(() => import(\"../Preview/PreviewFileModal\")),\n);\n\nconst baseDnDStyle = {\n borderWidth: 2,\n borderRadius: 2,\n borderColor: \"transparent\",\n outline: \"none\",\n};\n\nconst activeDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"transparent\",\n borderColor: \"#2196f3\",\n};\n\nconst acceptDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"transparent\",\n borderColor: \"#00e676\",\n};\n\nconst ListObjects = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n const location = useLocation();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const bucketToRewind = useSelector(\n (state: AppState) => state.objectBrowser.rewind.bucketToRewind,\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted,\n );\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen,\n );\n const selectedInternalPaths = useSelector(\n (state: AppState) => state.objectBrowser.selectedInternalPaths,\n );\n const requestInProgress = useSelector(\n (state: AppState) => state.objectBrowser.requestInProgress,\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath,\n );\n const versioningConfig = useSelector(\n (state: AppState) => state.objectBrowser.versionInfo,\n );\n const lockingEnabled = useSelector(\n (state: AppState) => state.objectBrowser.lockingEnabled,\n );\n const downloadRenameModal = useSelector(\n (state: AppState) => state.objectBrowser.downloadRenameModal,\n );\n const selectedPreview = useSelector(\n (state: AppState) => state.objectBrowser.selectedPreview,\n );\n const shareFileModalOpen = useSelector(\n (state: AppState) => state.objectBrowser.shareFileModalOpen,\n );\n const previewOpen = useSelector(\n (state: AppState) => state.objectBrowser.previewOpen,\n );\n const selectedBucket = useSelector(\n (state: AppState) => state.objectBrowser.selectedBucket,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n const anonymousAccessOpen = useSelector(\n (state: AppState) => state.objectBrowser.anonymousAccessOpen,\n );\n\n const records = useSelector(\n (state: AppState) => state.objectBrowser?.records || [],\n );\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [rewindSelect, setRewindSelect] = useState(false);\n const [iniLoad, setIniLoad] = useState(false);\n const [canShareFile, setCanShareFile] = useState(false);\n const [canPreviewFile, setCanPreviewFile] = useState(false);\n const [quota, setQuota] = useState(null);\n const [metaData, setMetaData] = useState(null);\n const [isMetaDataLoaded, setIsMetaDataLoaded] = useState(false);\n\n const isVersioningApplied = isVersionedMode(versioningConfig.status);\n\n const bucketName = params.bucketName || \"\";\n const pathSegment = location.pathname.split(`/browser/${bucketName}/`);\n const internalPaths =\n pathSegment.length === 2 ? decodeURIComponent(pathSegment[1]) : \"\";\n\n const currentPath = internalPaths.split(\"/\").filter((i: string) => i !== \"\");\n\n let uploadPath = [bucketName];\n if (currentPath.length > 0) {\n uploadPath = uploadPath.concat(currentPath);\n }\n\n const fileUpload = useRef(null);\n const folderUpload = useRef(null);\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const pathAsResourceInPolicy = uploadPath.join(\"/\");\n const allowedFileExtensions = getPolicyAllowedFileExtensions(\n sessionGrants,\n pathAsResourceInPolicy,\n putObjectPermScopes,\n );\n\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n pathAsResourceInPolicy,\n putObjectPermScopes,\n );\n\n const canDownload = hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n );\n const canRewind = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n ]);\n const canDelete = hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n [IAM_SCOPES.S3_DELETE_OBJECT],\n );\n const canUpload =\n hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) || anonymousMode;\n\n const canSetAnonymousAccess = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects,\n );\n\n const checkForDelMarker = (): boolean => {\n let isObjDelMarker = false;\n if (selectedObjects.length === 1) {\n let matchingRec = records.find((obj) => {\n return obj.name === `${selectedObjects[0]}` && obj.delete_flag;\n });\n\n isObjDelMarker = !!matchingRec;\n }\n return isObjDelMarker;\n };\n\n const isSelObjectDelMarker = checkForDelMarker();\n\n const fetchMetadata = useCallback(() => {\n const objectName = selectedObjects[0];\n\n if (!isMetaDataLoaded && objectName) {\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: objectName,\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n setIsMetaDataLoaded(true);\n setMetaData(metadata);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Metadata Status: \",\n err,\n err?.detailedError,\n );\n setIsMetaDataLoaded(true);\n });\n }\n }, [bucketName, selectedObjects, isMetaDataLoaded]);\n\n useEffect(() => {\n if (bucketName && !isSelObjectDelMarker) {\n fetchMetadata();\n }\n }, [bucketName, selectedObjects, fetchMetadata, isSelObjectDelMarker]);\n\n useEffect(() => {\n if (rewindEnabled) {\n if (bucketToRewind !== bucketName) {\n dispatch(resetRewind());\n return;\n }\n }\n }, [rewindEnabled, bucketToRewind, bucketName, dispatch]);\n\n useEffect(() => {\n if (folderUpload.current !== null) {\n folderUpload.current.setAttribute(\"directory\", \"\");\n folderUpload.current.setAttribute(\"webkitdirectory\", \"\");\n }\n }, [folderUpload]);\n\n useEffect(() => {\n if (selectedObjects.length === 1) {\n const objectName = selectedObjects[0];\n const isPrefix = objectName.endsWith(\"/\");\n\n let objectType: AllowedPreviews = previewObjectType(metaData, objectName);\n\n if (objectType !== \"none\" && canDownload) {\n setCanPreviewFile(true);\n } else {\n setCanPreviewFile(false);\n }\n\n if (canDownload && !isPrefix) {\n setCanShareFile(true);\n } else {\n setCanShareFile(false);\n }\n } else {\n setCanShareFile(false);\n setCanPreviewFile(false);\n }\n }, [selectedObjects, canDownload, metaData]);\n\n useEffect(() => {\n if (!quota && !anonymousMode) {\n api.buckets\n .getBucketQuota(bucketName)\n .then((res) => {\n let quotaVals = null;\n\n if (res.data.quota) {\n quotaVals = res.data;\n }\n\n setQuota(quotaVals);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Quota Status: \",\n err.error.detailedMessage,\n );\n setQuota(null);\n });\n }\n }, [quota, bucketName, anonymousMode]);\n\n useEffect(() => {\n if (selectedObjects.length > 0) {\n dispatch(setObjectDetailsView(true));\n return;\n }\n\n if (\n selectedObjects.length === 0 &&\n selectedInternalPaths === null &&\n !requestInProgress\n ) {\n dispatch(setObjectDetailsView(false));\n }\n }, [selectedObjects, selectedInternalPaths, dispatch, requestInProgress]);\n\n useEffect(() => {\n if (!iniLoad) {\n dispatch(setBucketDetailsLoad(true));\n setIniLoad(true);\n }\n }, [iniLoad, dispatch, setIniLoad]);\n\n // bucket info\n useEffect(() => {\n if ((requestInProgress || loadingBucket) && !anonymousMode) {\n api.buckets\n .bucketInfo(bucketName)\n .then((res) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setBucketInfo(res.data));\n })\n .catch((err) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }\n }, [bucketName, loadingBucket, dispatch, anonymousMode, requestInProgress]);\n\n // Load retention Config\n\n useEffect(() => {\n if (selectedBucket !== \"\") {\n api.buckets\n .getBucketRetentionConfig(selectedBucket)\n .then((res) => {\n dispatch(setRetentionConfig(res.data));\n })\n .catch(() => {\n dispatch(setRetentionConfig(null));\n });\n }\n }, [selectedBucket, dispatch]);\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n\n if (refresh) {\n dispatch(setSnackBarMessage(`Objects deleted successfully.`));\n dispatch(setSelectedObjects([]));\n dispatch(setReloadObjectsList(true));\n }\n };\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n var newFiles: File[] = [];\n\n for (let i = 0; i < e.target.files.length; i++) {\n newFiles.push(e.target.files[i]);\n }\n uploadObject(newFiles, \"\");\n\n e.target.value = \"\";\n };\n\n const uploadObject = useCallback(\n (files: File[], folderPath: string): void => {\n let pathPrefix = \"\";\n if (simplePath) {\n pathPrefix = simplePath.endsWith(\"/\") ? simplePath : simplePath + \"/\";\n }\n\n const upload = (\n files: File[],\n bucketName: string,\n path: string,\n folderPath: string,\n ) => {\n let uploadPromise = (file: File) => {\n return new Promise((resolve, reject) => {\n let uploadUrl = `api/v1/buckets/${bucketName}/objects/upload`;\n const fileName = file.name;\n\n const blobFile = new Blob([file], { type: file.type });\n\n const filePath = get(file, \"path\", \"\");\n const fileWebkitRelativePath = get(file, \"webkitRelativePath\", \"\");\n\n let relativeFolderPath = folderPath;\n const ID = makeid(8);\n\n // File was uploaded via drag & drop\n if (filePath !== \"\") {\n relativeFolderPath = filePath;\n } else if (fileWebkitRelativePath !== \"\") {\n // File was uploaded using upload button\n relativeFolderPath = fileWebkitRelativePath;\n }\n\n let prefixPath = \"\";\n\n if (path !== \"\" || relativeFolderPath !== \"\") {\n const finalFolderPath = relativeFolderPath\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\");\n\n const pathClean = path.endsWith(\"/\") ? path.slice(0, -1) : path;\n\n prefixPath = `${pathClean}${\n !pathClean.endsWith(\"/\") &&\n finalFolderPath !== \"\" &&\n !finalFolderPath.startsWith(\"/\")\n ? \"/\"\n : \"\"\n }${finalFolderPath}${\n !finalFolderPath.endsWith(\"/\") ||\n (finalFolderPath.trim() === \"\" && !path.endsWith(\"/\"))\n ? \"/\"\n : \"\"\n }`;\n }\n\n if (prefixPath !== \"\") {\n uploadUrl = `${uploadUrl}?prefix=${encodeURIComponent(\n prefixPath + fileName,\n )}`;\n } else {\n uploadUrl = `${uploadUrl}?prefix=${encodeURIComponent(fileName)}`;\n }\n\n const identity = encodeURIComponent(\n `${bucketName}-${prefixPath}-${new Date().getTime()}-${Math.random()}`,\n );\n\n let xhr = new XMLHttpRequest();\n xhr.open(\"POST\", uploadUrl, true);\n if (anonymousMode) {\n xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n }\n // xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n\n const areMultipleFiles = files.length > 1;\n let errorMessage = `An error occurred while uploading the file${\n areMultipleFiles ? \"s\" : \"\"\n }.`;\n\n const errorMessages: any = {\n 413: \"Error - File size too large\",\n };\n\n xhr.withCredentials = false;\n xhr.onload = function () {\n // resolve promise only when HTTP code is ok\n if (xhr.status >= 200 && xhr.status < 300) {\n dispatch(completeObject(identity));\n resolve({ status: xhr.status });\n\n removeTrace(ID);\n } else {\n // reject promise if there was a server error\n if (errorMessages[xhr.status]) {\n errorMessage = errorMessages[xhr.status];\n } else if (xhr.response) {\n try {\n const err = JSON.parse(xhr.response);\n errorMessage = err.detailedMessage;\n } catch (e) {\n errorMessage = \"something went wrong\";\n }\n }\n\n dispatch(\n failObject({\n instanceID: identity,\n msg: errorMessage,\n }),\n );\n reject({ status: xhr.status, message: errorMessage });\n\n removeTrace(ID);\n }\n };\n\n xhr.upload.addEventListener(\"error\", () => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n }),\n );\n return;\n });\n\n xhr.upload.addEventListener(\"progress\", (event) => {\n const progress = Math.floor((event.loaded * 100) / event.total);\n\n dispatch(\n updateProgress({\n instanceID: identity,\n progress: progress,\n }),\n );\n });\n\n xhr.onerror = () => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n }),\n );\n return;\n };\n xhr.onloadend = () => {\n if (files.length === 0) {\n dispatch(setReloadObjectsList(true));\n }\n };\n xhr.onabort = () => {\n dispatch(cancelObjectInList(identity));\n };\n\n const formData = new FormData();\n if (file.size !== undefined) {\n formData.append(file.size.toString(), blobFile, fileName);\n storeCallForObjectWithID(ID, xhr);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identity,\n percentage: 0,\n prefix: `${prefixPath}${fileName}`,\n type: \"upload\",\n waitingForFile: false,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n }),\n );\n storeFormDataWithID(ID, formData);\n }\n });\n };\n\n const uploadFilePromises: any = [];\n // open object manager\n dispatch(openList());\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n uploadFilePromises.push(uploadPromise(file));\n }\n Promise.allSettled(uploadFilePromises).then((results: Array) => {\n const errors = results.filter(\n (result) => result.status === \"rejected\",\n );\n if (errors.length > 0) {\n const totalFiles = uploadFilePromises.length;\n const successUploadedFiles =\n uploadFilePromises.length - errors.length;\n const err: ErrorResponseHandler = {\n errorMessage: \"There were some errors during file upload\",\n detailedError: `Uploaded files ${successUploadedFiles}/${totalFiles}`,\n };\n dispatch(setErrorSnackMessage(err));\n }\n // We force objects list reload after all promises were handled\n dispatch(setReloadObjectsList(true));\n });\n };\n\n upload(files, bucketName, pathPrefix, folderPath);\n },\n [bucketName, dispatch, simplePath, anonymousMode],\n );\n\n const onDrop = useCallback(\n (acceptedFiles: any[]) => {\n if (acceptedFiles && acceptedFiles.length > 0 && canUpload) {\n let newFolderPath: string = acceptedFiles[0].path;\n //Should we filter by allowed file extensions if any?.\n let allowedFiles = acceptedFiles;\n\n if (allowedFileExtensions.length > 0) {\n allowedFiles = acceptedFiles.filter((file) => {\n const fileExtn = extractFileExtn(file.name);\n return allowedFileExtensions.includes(fileExtn);\n });\n }\n\n if (allowedFiles.length) {\n uploadObject(allowedFiles, newFolderPath);\n console.log(\n `${allowedFiles.length} Allowed Files Processed out of ${acceptedFiles.length}.`,\n pathAsResourceInPolicy,\n ...sessionGrantWildCards,\n );\n\n if (allowedFiles.length !== acceptedFiles.length) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Upload is restricted.\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n }\n } else {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Could not process drag and drop.\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n\n console.error(\n \"Could not process drag and drop . upload may be restricted.\",\n pathAsResourceInPolicy,\n ...sessionGrantWildCards,\n );\n }\n }\n if (!canUpload) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Upload not allowed\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [uploadObject],\n );\n\n const { getRootProps, getInputProps, isDragActive, isDragAccept } =\n useDropzone({\n noClick: true,\n onDrop,\n });\n\n const dndStyles = useMemo(\n () => ({\n ...baseDnDStyle,\n ...(isDragActive ? activeDnDStyle : {}),\n ...(isDragAccept ? acceptDnDStyle : {}),\n }),\n [isDragActive, isDragAccept],\n );\n\n const closeShareModal = () => {\n dispatch(setShareFileModalOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const rewindCloseModal = () => {\n setRewindSelect(false);\n };\n\n const closePreviewWindow = () => {\n dispatch(setPreviewOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const onClosePanel = (forceRefresh: boolean) => {\n dispatch(setSelectedObjectView(null));\n dispatch(setVersionsModeEnabled({ status: false }));\n if (detailsOpen && selectedInternalPaths !== null) {\n // We change URL to be the contained folder\n\n const splitURLS = internalPaths.split(\"/\");\n\n // We remove the last section of the URL as it should be a file\n splitURLS.pop();\n\n let URLItem = \"\";\n\n if (splitURLS && splitURLS.length > 0) {\n URLItem = `${splitURLS.join(\"/\")}/`;\n }\n\n navigate(\n `/browser/${encodeURIComponent(bucketName)}/${encodeURIComponent(URLItem)}`,\n );\n }\n\n dispatch(setObjectDetailsView(false));\n\n if (forceRefresh) {\n dispatch(setReloadObjectsList(true));\n }\n };\n\n const setDeletedAction = () => {\n dispatch(resetMessages());\n dispatch(setShowDeletedObjects(!showDeleted));\n onClosePanel(true);\n };\n\n const closeRenameModal = () => {\n dispatch(setDownloadRenameModal(null));\n };\n\n const closeAddAccessRule = () => {\n dispatch(setAnonymousAccessOpen(false));\n };\n\n let createdTime = DateTime.now();\n\n if (bucketInfo?.creation_date) {\n createdTime = DateTime.fromISO(bucketInfo.creation_date) as DateTime;\n }\n\n const downloadToolTip =\n selectedObjects?.length <= 1\n ? \"Download Selected\"\n : ` Download selected objects as Zip. Any Deleted objects in the selection would be skipped from download.`;\n\n const multiActionButtons = [\n {\n action: () => {\n dispatch(downloadSelected(bucketName));\n },\n label: \"Download\",\n disabled: !canDownload || isSelObjectDelMarker,\n icon: ,\n tooltip: canDownload\n ? downloadToolTip\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download objects from this bucket\",\n ),\n },\n {\n action: () => {\n dispatch(openShare());\n },\n label: \"Share\",\n disabled:\n selectedObjects.length !== 1 || !canShareFile || isSelObjectDelMarker,\n icon: ,\n tooltip: canShareFile ? \"Share Selected File\" : \"Sharing unavailable\",\n },\n {\n action: () => {\n dispatch(openPreview());\n },\n label: \"Preview\",\n disabled:\n selectedObjects.length !== 1 || !canPreviewFile || isSelObjectDelMarker,\n icon: ,\n tooltip: canPreviewFile ? \"Preview Selected File\" : \"Preview unavailable\",\n },\n {\n action: () => {\n dispatch(openAnonymousAccess());\n },\n label: \"Anonymous Access\",\n disabled:\n selectedObjects.length !== 1 ||\n !selectedObjects[0].endsWith(\"/\") ||\n !canSetAnonymousAccess,\n icon: ,\n tooltip:\n selectedObjects.length === 1 && selectedObjects[0].endsWith(\"/\")\n ? \"Set Anonymous Access to this Folder\"\n : \"Anonymous Access unavailable\",\n },\n {\n action: () => {\n setDeleteMultipleOpen(true);\n },\n label: \"Delete\",\n icon: ,\n disabled: !canDelete || selectedObjects.length === 0,\n tooltip: canDelete\n ? \"Delete Selected Files\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_DELETE_OBJECT],\n \"delete objects in this bucket\",\n ),\n },\n ];\n\n return (\n \n {shareFileModalOpen && selectedPreview && (\n \n )}\n {deleteMultipleOpen && (\n \n )}\n {rewindSelect && (\n \n )}\n {previewOpen && selectedPreview && (\n \n )}\n {!!downloadRenameModal && (\n \n )}\n {anonymousAccessOpen && (\n \n )}\n\n \n {anonymousMode && (\n
\n \n
\n )}\n \n \n \n \n }\n title={bucketName}\n subTitle={\n !anonymousMode ? (\n \n \n Created on: \n \n {bucketInfo?.creation_date\n ? createdTime.toFormat(\n \"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\",\n )\n : \"\"}\n \n \n \n Access:  \n {bucketInfo?.access || \"\"}\n \n {bucketInfo && (\n \n \n {bucketInfo.size && (\n {niceBytesInt(bucketInfo.size)}\n )}\n {bucketInfo.size && quota && (\n \n {\" \"}\n / {niceBytesInt(quota.quota || 0)}\n \n )}\n {bucketInfo.size && bucketInfo.objects ? \" - \" : \"\"}\n {bucketInfo.objects && (\n \n {bucketInfo.objects} Object\n {bucketInfo.objects && bucketInfo.objects !== 1\n ? \"s\"\n : \"\"}\n \n )}\n \n \n )}\n \n ) : null\n }\n actions={\n \n {!anonymousMode && (\n \n \n \n \n }\n variant={\"regular\"}\n onClick={() => {\n setRewindSelect(true);\n }}\n disabled={!isVersioningApplied || !canRewind}\n />\n \n )}\n \n }\n variant={\"regular\"}\n onClick={() => {\n if (versionsMode) {\n dispatch(setLoadingVersions(true));\n } else {\n dispatch(resetMessages());\n dispatch(setReloadObjectsList(true));\n }\n }}\n disabled={\n anonymousMode\n ? false\n : !hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || rewindEnabled\n }\n />\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n closeMenu();\n }}\n uploadFolderFunction={(closeMenu) => {\n if (folderUpload && folderUpload.current) {\n folderUpload.current.click();\n }\n closeMenu();\n }}\n />\n \n }\n bottomBorder={false}\n />\n \n \n \n \n {versionsMode ? (\n \n {selectedInternalPaths !== null && (\n \n )}\n \n ) : (\n \n \n {!anonymousMode && (\n \n \n )\n }\n hidePathButton={false}\n />\n \n )}\n \n \n \n )}\n {!anonymousMode && (\n \n {\n onClosePanel(false);\n }}\n className={`${versionsMode ? \"hideListOnSmall\" : \"\"}`}\n >\n {selectedObjects.length > 0 && (\n \n )}\n {selectedInternalPaths !== null && (\n \n )}\n \n \n )}\n \n \n
\n
\n );\n};\n\nexport default ListObjects;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport {\n IAM_PAGES,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { BackLink, Button, SettingsIcon, Grid } from \"mds\";\nimport AutoColorIcon from \"../Common/Components/AutoColorIcon\";\nimport { useSelector } from \"react-redux\";\nimport { selFeatures } from \"../consoleSlice\";\nimport hasPermission from \"../../../common/SecureComponent/accessControl\";\nimport { useNavigate } from \"react-router-dom\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setSearchVersions } from \"./objectBrowserSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport FilterObjectsSB from \"./FilterObjectsSB\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport ObjectManagerButton from \"../Common/ObjectManager/ObjectManagerButton\";\nimport HelpMenu from \"../HelpMenu\";\nimport { setHelpName } from \"../../../systemSlice\";\n\ninterface IOBHeader {\n bucketName: string;\n}\n\nconst OBHeader = ({ bucketName }: IOBHeader) => {\n const dispatch = useAppDispatch();\n const features = useSelector(selFeatures);\n\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile,\n );\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions,\n );\n\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const navigate = useNavigate();\n\n const configureBucketAllowed = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_DELETE_BUCKET,\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_PUT_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_PUT_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n IAM_SCOPES.ADMIN_SET_BUCKET_QUOTA,\n IAM_SCOPES.S3_PUT_BUCKET_TAGGING,\n IAM_SCOPES.S3_GET_BUCKET_TAGGING,\n IAM_SCOPES.S3_LIST_BUCKET_VERSIONS,\n IAM_SCOPES.S3_GET_BUCKET_POLICY_STATUS,\n IAM_SCOPES.S3_DELETE_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const searchBar = (\n \n {!versionsMode ? (\n \n \n \n ) : (\n \n {\n dispatch(setSearchVersions(value));\n }}\n value={searchVersions}\n />\n \n )}\n \n );\n\n useEffect(() => {\n dispatch(setHelpName(\"object_browser\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {!obOnly ? (\n {\n navigate(IAM_PAGES.OBJECT_BROWSER_VIEW);\n }}\n />\n }\n actions={\n \n \n \n navigate(`/buckets/${bucketName}/admin`)}\n icon={\n \n }\n style={{\n padding: \"0 10px\",\n }}\n />\n \n \n \n \n }\n middleComponent={searchBar}\n />\n ) : (\n \n \n \n \n \n {searchBar}\n \n \n \n )}\n \n );\n};\n\nexport default OBHeader;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useParams } from \"react-router-dom\";\nimport { api } from \"api\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n resetMessages,\n setIsVersioned,\n setLoadingLocking,\n setLoadingObjectInfo,\n setLoadingVersioning,\n setLoadingVersions,\n setLockingEnabled,\n setObjectDetailsView,\n setRequestInProgress,\n setSelectedObjectView,\n setVersionsModeEnabled,\n} from \"../../ObjectBrowser/objectBrowserSlice\";\nimport ListObjects from \"../ListBuckets/Objects/ListObjects/ListObjects\";\nimport hasPermission from \"../../../../common/SecureComponent/accessControl\";\nimport OBHeader from \"../../ObjectBrowser/OBHeader\";\n\nconst BrowserHandler = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const location = useLocation();\n\n const loadingVersioning = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersioning,\n );\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const rewindDate = useSelector(\n (state: AppState) => state.objectBrowser.rewind.dateToRewind,\n );\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted,\n );\n const requestInProgress = useSelector(\n (state: AppState) => state.objectBrowser.requestInProgress,\n );\n const loadingLocking = useSelector(\n (state: AppState) => state.objectBrowser.loadingLocking,\n );\n const reloadObjectsList = useSelector(\n (state: AppState) => state.objectBrowser.reloadObjectsList,\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n const selectedBucket = useSelector(\n (state: AppState) => state.objectBrowser.selectedBucket,\n );\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n\n const bucketName = params.bucketName || \"\";\n const pathSegment = location.pathname.split(\n `/browser/${encodeURIComponent(bucketName)}/`,\n );\n const internalPaths =\n pathSegment.length === 2 ? decodeURIComponent(pathSegment[1]) : \"\";\n\n const initWSRequest = useCallback(\n (path: string) => {\n let currDate = new Date();\n\n let date = currDate.toISOString();\n\n if (rewindDate !== null && rewindEnabled) {\n date = rewindDate;\n }\n\n const payloadData = {\n bucketName,\n path,\n rewindMode: rewindEnabled || showDeleted,\n date: date,\n };\n\n dispatch({ type: \"socket/OBRequest\", payload: payloadData });\n },\n [bucketName, showDeleted, rewindDate, rewindEnabled, dispatch],\n );\n\n // Common path load\n const pathLoad = useCallback(\n (forceLoad: boolean = false) => {\n // We exit Versions mode in case of path change\n dispatch(setVersionsModeEnabled({ status: false }));\n\n let searchPath = internalPaths;\n\n if (!internalPaths.endsWith(\"/\") && internalPaths !== \"\") {\n searchPath = `${internalPaths.split(\"/\").slice(0, -1).join(\"/\")}/`;\n }\n\n if (searchPath === \"/\") {\n searchPath = \"\";\n }\n\n // If the path is different of the actual path or reload objects list is requested, then we initialize a new request to load a new record set.\n if (\n searchPath !== simplePath ||\n bucketName !== selectedBucket ||\n forceLoad\n ) {\n dispatch(setRequestInProgress(true));\n initWSRequest(searchPath);\n }\n },\n [\n internalPaths,\n dispatch,\n simplePath,\n selectedBucket,\n bucketName,\n initWSRequest,\n ],\n );\n\n useEffect(() => {\n return () => {\n dispatch({ type: \"socket/OBCancelLast\" });\n };\n }, [dispatch]);\n\n // Object Details handler\n useEffect(() => {\n dispatch(setLoadingVersioning(true));\n\n if (internalPaths.endsWith(\"/\") || internalPaths === \"\") {\n dispatch(setObjectDetailsView(false));\n dispatch(setSelectedObjectView(null));\n dispatch(setLoadingLocking(true));\n } else {\n dispatch(setLoadingObjectInfo(true));\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedObjectView(internalPaths || \"\"));\n }\n }, [bucketName, internalPaths, rewindDate, rewindEnabled, dispatch]);\n\n // Navigation Listing Request\n useEffect(() => {\n pathLoad(false);\n }, [pathLoad]);\n\n // Reload Handler\n useEffect(() => {\n if (reloadObjectsList && records.length === 0 && !requestInProgress) {\n pathLoad(true);\n }\n }, [reloadObjectsList, records, requestInProgress, pathLoad]);\n\n const displayListObjects =\n hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || anonymousMode;\n\n useEffect(() => {\n if (loadingVersioning && !anonymousMode) {\n if (displayListObjects) {\n api.buckets\n .getBucketVersioning(bucketName)\n .then((res) => {\n dispatch(setIsVersioned(res.data));\n dispatch(setLoadingVersioning(false));\n })\n .catch((err) => {\n console.error(\n \"Error Getting Object Versioning Status: \",\n err.error.detailedMessage,\n );\n dispatch(setLoadingVersioning(false));\n });\n } else {\n dispatch(setLoadingVersioning(false));\n dispatch(resetMessages());\n }\n }\n }, [\n bucketName,\n loadingVersioning,\n dispatch,\n displayListObjects,\n anonymousMode,\n ]);\n\n useEffect(() => {\n if (loadingLocking) {\n if (displayListObjects) {\n api.buckets\n .getBucketObjectLockingStatus(bucketName)\n .then((res) => {\n dispatch(setLockingEnabled(res.data.object_locking_enabled));\n dispatch(setLoadingLocking(false));\n })\n .catch((err) => {\n console.error(\n \"Error Getting Object Locking Status: \",\n err.error.detailedMessage,\n );\n dispatch(setLoadingLocking(false));\n });\n } else {\n dispatch(resetMessages());\n dispatch(setLoadingLocking(false));\n }\n }\n }, [bucketName, loadingLocking, dispatch, displayListObjects]);\n\n return (\n \n {!anonymousMode && }\n \n \n );\n};\n\nexport default BrowserHandler;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { DateTime } from \"luxon\";\nimport { Box, InputBox, InputLabel, LinkIcon } from \"mds\";\n\nconst DAY_SECONDS = 86400;\nconst HOUR_SECONDS = 3600;\nconst HOUR_MINUTES = 60;\n\ninterface IDaysSelector {\n id: string;\n initialDate: Date;\n maxSeconds: number;\n label: string;\n entity: string;\n onChange: (newDate: string, isValid: boolean) => void;\n}\n\nconst calculateNewTime = (\n initialDate: Date,\n days: number,\n hours: number,\n minutes: number,\n) => {\n return DateTime.fromJSDate(initialDate).plus({\n hours: hours + days * 24,\n minutes,\n }); // Lump days into hours to avoid daylight savings causing issues\n};\n\nconst DaysSelector = ({\n id,\n initialDate,\n label,\n maxSeconds,\n entity,\n onChange,\n}: IDaysSelector) => {\n const maxDays = Math.floor(maxSeconds / DAY_SECONDS);\n const maxHours = Math.floor((maxSeconds % DAY_SECONDS) / HOUR_SECONDS);\n const maxMinutes = Math.floor((maxSeconds % HOUR_SECONDS) / HOUR_MINUTES);\n\n const [selectedDays, setSelectedDays] = useState(0);\n const [selectedHours, setSelectedHours] = useState(0);\n const [selectedMinutes, setSelectedMinutes] = useState(0);\n const [validDate, setValidDate] = useState(true);\n const [dateSelected, setDateSelected] = useState(DateTime.now());\n\n // Set initial values\n useEffect(() => {\n setSelectedDays(maxDays);\n setSelectedHours(maxHours);\n setSelectedMinutes(maxMinutes);\n }, [maxDays, maxHours, maxMinutes]);\n\n useEffect(() => {\n if (\n !isNaN(selectedHours) &&\n !isNaN(selectedDays) &&\n !isNaN(selectedMinutes)\n ) {\n setDateSelected(\n calculateNewTime(\n initialDate,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ),\n );\n }\n }, [initialDate, selectedDays, selectedHours, selectedMinutes]);\n\n useEffect(() => {\n if (validDate) {\n const formattedDate = dateSelected.toFormat(\"yyyy-MM-dd HH:mm:ss\");\n onChange(formattedDate.split(\" \").join(\"T\"), true);\n } else {\n onChange(\"0000-00-00\", false);\n }\n }, [dateSelected, onChange, validDate]);\n\n // Basic validation for inputs\n useEffect(() => {\n let valid = true;\n\n if (\n selectedDays < 0 ||\n selectedDays > 7 ||\n selectedDays > maxDays ||\n isNaN(selectedDays)\n ) {\n valid = false;\n }\n\n if (selectedHours < 0 || selectedHours > 23 || isNaN(selectedHours)) {\n valid = false;\n }\n\n if (selectedMinutes < 0 || selectedMinutes > 59 || isNaN(selectedMinutes)) {\n valid = false;\n }\n\n if (selectedDays === maxDays) {\n if (selectedHours > maxHours) {\n valid = false;\n }\n\n if (selectedHours === maxHours) {\n if (selectedMinutes > maxMinutes) {\n valid = false;\n }\n }\n }\n\n if (selectedDays <= 0 && selectedHours <= 0 && selectedMinutes <= 0) {\n valid = false;\n }\n\n setValidDate(valid);\n }, [\n dateSelected,\n maxDays,\n maxHours,\n maxMinutes,\n onChange,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ]);\n\n const extraStyles = {\n \"& .textBoxContainer\": {\n minWidth: 0,\n },\n \"& input\": {\n textAlign: \"center\" as const,\n paddingRight: 10,\n paddingLeft: 10,\n width: 40,\n },\n };\n\n return (\n \n \n {label}\n \n label\": {\n fontWeight: 400,\n marginLeft: 15,\n marginRight: 25,\n },\n },\n }}\n >\n \n {\n setSelectedDays(parseInt(e.target.value));\n }}\n value={selectedDays.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n {\n setSelectedHours(parseInt(e.target.value));\n }}\n value={selectedHours.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n {\n setSelectedMinutes(parseInt(e.target.value));\n }}\n value={selectedMinutes.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n .min-icon\": {\n color: \"#5E5E5E\",\n width: 15,\n height: 15,\n marginRight: 10,\n },\n },\n \"& .validTill\": {\n fontWeight: \"bold\",\n marginLeft: 15,\n },\n \"& .invalidDurationText\": {\n marginTop: 15,\n display: \"flex\",\n color: \"red\",\n fontSize: 11,\n },\n }}\n >\n {validDate ? (\n
\n \n
{entity} will be available until:
{\" \"}\n
\n {dateSelected.toFormat(\"MM/dd/yyyy HH:mm:ss ZZZZ\")}\n
\n
\n ) : (\n
\n Please select a valid duration.\n
\n )}\n \n \n );\n};\n\nexport default DaysSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport {\n Button,\n CopyIcon,\n ReadBox,\n ShareIcon,\n Grid,\n ProgressBar,\n Tooltip,\n} from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport DaysSelector from \"../../../../Common/FormComponents/DaysSelector/DaysSelector\";\nimport { niceTimeFromSeconds } from \"../../../../../../common/utils\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n setModalSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { getMaxShareLinkExpTime } from \"screens/Console/ObjectBrowser/objectBrowserThunks\";\nimport { maxShareLinkExpTime } from \"screens/Console/ObjectBrowser/objectBrowserSlice\";\n\ninterface IShareFileProps {\n open: boolean;\n bucketName: string;\n dataObject: BucketObject;\n closeModalAndRefresh: () => void;\n}\n\nconst ShareFile = ({\n open,\n closeModalAndRefresh,\n bucketName,\n dataObject,\n}: IShareFileProps) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const maxshareLinkExpTimeVal = useSelector(maxShareLinkExpTime);\n const [shareURL, setShareURL] = useState(\"\");\n const [isLoadingVersion, setIsLoadingVersion] = useState(true);\n const [isLoadingFile, setIsLoadingFile] = useState(false);\n const [selectedDate, setSelectedDate] = useState(\"\");\n const [dateValid, setDateValid] = useState(true);\n const [versionID, setVersionID] = useState(\"null\");\n\n const initialDate = new Date();\n\n const dateChanged = (newDate: string, isValid: boolean) => {\n setDateValid(isValid);\n if (isValid) {\n setSelectedDate(newDate);\n return;\n }\n setSelectedDate(\"\");\n setShareURL(\"\");\n };\n\n useEffect(() => {\n dispatch(getMaxShareLinkExpTime());\n }, [dispatch]);\n\n useEffect(() => {\n // In case version is undefined, we get the latest version of the object\n if (dataObject.version_id === undefined) {\n // In case it is not distributed setup, then we default to \"null\";\n if (distributedSetup) {\n api.buckets\n .listObjects(bucketName, {\n prefix: dataObject.name || \"\",\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result: BucketObject[] = res.data.objects || [];\n\n const latestVersion: BucketObject | undefined = result.find(\n (elem: BucketObject) => elem.is_latest,\n );\n\n if (latestVersion) {\n setVersionID(`${latestVersion.version_id}`);\n return;\n }\n\n // Version couldn't be retrieved, we default\n setVersionID(\"null\");\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(\"null\");\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(dataObject.version_id || \"null\");\n setIsLoadingVersion(false);\n }, [bucketName, dataObject, distributedSetup, dispatch]);\n\n useEffect(() => {\n if (dateValid && !isLoadingVersion) {\n setIsLoadingFile(true);\n setShareURL(\"\");\n\n const slDate = new Date(`${selectedDate}`);\n const currDate = new Date();\n\n const diffDate = Math.ceil(\n (slDate.getTime() - currDate.getTime()) / 1000,\n );\n\n if (diffDate > 0) {\n api.buckets\n .shareObject(bucketName, {\n prefix: dataObject.name || \"\",\n version_id: versionID,\n expires: selectedDate !== \"\" ? `${diffDate}s` : \"\",\n })\n .then((res) => {\n setShareURL(res.data);\n setIsLoadingFile(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setShareURL(\"\");\n setIsLoadingFile(false);\n });\n }\n }\n }, [\n dataObject,\n selectedDate,\n bucketName,\n dateValid,\n setShareURL,\n dispatch,\n distributedSetup,\n isLoadingVersion,\n versionID,\n ]);\n\n return (\n \n }\n modalOpen={open}\n onClose={() => {\n closeModalAndRefresh();\n }}\n >\n {isLoadingVersion && (\n \n \n \n )}\n {!isLoadingVersion && (\n \n \n \n You can reset your session by logging out and logging back\n in to the web UI.

\n You can increase the maximum configuration time by setting\n the MINIO_STS_DURATION environment variable on all your\n nodes.

\n You can use mc share as an alternative to this UI,\n where the session length does not limit the URL validity.\n \n }\n >\n \n The following URL lets you share this object without requiring\n a login.
\n The URL expires automatically at the earlier of your\n configured time ({niceTimeFromSeconds(maxshareLinkExpTimeVal)}\n ) or the expiration of your current web session.\n
\n \n \n
\n \n \n \n \n \n {\n dispatch(\n setModalSnackMessage(\"Share URL Copied to clipboard\"),\n );\n }}\n disabled={shareURL === \"\" || isLoadingFile}\n style={{\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n >\n {shareURL}\n \n \n
\n )}\n \n
\n );\n};\n\nexport default ShareFile;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Document, Page, pdfjs } from \"react-pdf\";\nimport { Box, Button, InformativeMessage } from \"mds\";\n\npdfjs.GlobalWorkerOptions.workerSrc = \"./scripts/pdf.worker.min.js\";\n\ninterface IPreviewPDFProps {\n path: string;\n loading: boolean;\n onLoad: () => void;\n downloadFile: () => void;\n}\n\nconst PreviewPDF = ({\n path,\n loading,\n onLoad,\n downloadFile,\n}: IPreviewPDFProps) => {\n const [errorState, setErrorState] = useState(false);\n const [totalPages, setTotalPages] = useState(0);\n\n if (!path) {\n return null;\n }\n\n const renderPages = totalPages > 5 ? 5 : totalPages;\n const arrayCreate = Array.from(Array(renderPages).keys());\n\n return (\n \n {errorState && totalPages === 0 && (\n \n File preview couldn't be displayed, Please try Download instead.\n \n \n Download File\n \n \n \n }\n sx={{ marginBottom: 10 }}\n />\n )}\n {!loading && !errorState && (\n \n This is a File Preview for the first {arrayCreate.length} pages of\n the document, if you wish to work with the full document please\n download instead.\n \n \n Download File\n \n \n \n }\n sx={{ marginBottom: 10 }}\n />\n )}\n {!errorState && (\n \n {\n setTotalPages(_pdfInfo.numPages || 0);\n setErrorState(false);\n onLoad();\n }}\n onLoadError={(error) => {\n setErrorState(true);\n onLoad();\n console.error(error);\n }}\n >\n {arrayCreate.map((item) => (\n \n ))}\n \n \n )}\n \n );\n};\n\nexport default PreviewPDF;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { ProgressBar, Grid, Box, InformativeMessage } from \"mds\";\nimport get from \"lodash/get\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport { api } from \"../../../../../../api\";\nimport PreviewPDF from \"./PreviewPDF\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject } from \"../../../../../../api/consoleApi\";\n\ninterface IPreviewFileProps {\n bucketName: string;\n actualInfo: BucketObject;\n isFullscreen?: boolean;\n}\n\nconst PreviewFile = ({\n bucketName,\n actualInfo,\n isFullscreen = false,\n}: IPreviewFileProps) => {\n const dispatch = useAppDispatch();\n\n const [loading, setLoading] = useState(true);\n\n const [metaData, setMetaData] = useState(null);\n const [isMetaDataLoaded, setIsMetaDataLoaded] = useState(false);\n\n const objectName = actualInfo?.name || \"\";\n\n const fetchMetadata = useCallback(() => {\n if (!isMetaDataLoaded) {\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: objectName,\n versionID: actualInfo.version_id || \"\",\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n setIsMetaDataLoaded(true);\n setMetaData(metadata);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Metadata Status: \",\n err,\n err?.detailedError,\n );\n setIsMetaDataLoaded(true);\n });\n }\n }, [bucketName, objectName, isMetaDataLoaded, actualInfo.version_id]);\n\n useEffect(() => {\n if (bucketName && objectName) {\n fetchMetadata();\n }\n }, [bucketName, objectName, fetchMetadata]);\n\n let path = \"\";\n\n if (actualInfo) {\n let basename = document.baseURI.replace(window.location.origin, \"\");\n path = `${window.location.origin}${basename}api/v1/buckets/${encodeURIComponent(bucketName)}/objects/download?preview=true&prefix=${encodeURIComponent(actualInfo.name || \"\")}`;\n if (actualInfo.version_id) {\n path = path.concat(`&version_id=${actualInfo.version_id}`);\n }\n }\n\n let objectType: AllowedPreviews = previewObjectType(metaData, objectName);\n\n const iframeLoaded = () => {\n setLoading(false);\n };\n\n return (\n \n {objectType !== \"none\" && loading && (\n \n \n \n )}\n {isMetaDataLoaded ? (\n \n {objectType === \"video\" && (\n \n \n \n )}\n {objectType === \"audio\" && (\n \n \n \n )}\n {objectType === \"image\" && (\n \n )}\n {objectType === \"pdf\" && (\n \n \n downloadObject(dispatch, bucketName, path, actualInfo)\n }\n />\n \n )}\n {objectType === \"none\" && (\n
\n \n
\n )}\n {objectType !== \"none\" &&\n objectType !== \"video\" &&\n objectType !== \"audio\" &&\n objectType !== \"image\" &&\n objectType !== \"pdf\" && (\n
\n \n File couldn't be loaded. Please try Download instead\n \n
\n )}\n \n ) : null}\n
\n );\n};\nexport default PreviewFile;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PreviewFileContent from \"./PreviewFileContent\";\nimport { ObjectPreviewIcon } from \"mds\";\nimport { BucketObject } from \"../../../../../../api/consoleApi\";\n\ninterface IPreviewFileProps {\n open: boolean;\n bucketName: string;\n actualInfo: BucketObject;\n onClosePreview: () => void;\n}\n\nconst PreviewFileModal = ({\n open,\n bucketName,\n actualInfo,\n onClosePreview,\n}: IPreviewFileProps) => {\n return (\n \n }\n >\n \n \n \n );\n};\n\nexport default PreviewFileModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { AppState } from \"../../../store\";\nimport { getClientOS } from \"../../../common/utils\";\nimport { BucketObjectItem } from \"../Buckets/ListBuckets/Objects/ListObjects/types\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport {\n download,\n downloadSelectedAsZip,\n} from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setAnonymousAccessOpen,\n setDownloadRenameModal,\n setMaxShareLinkExpTime,\n setNewObject,\n setPreviewOpen,\n setSelectedPreview,\n setShareFileModalOpen,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { DateTime } from \"luxon\";\nimport { api } from \"api\";\n\nexport const downloadSelected = createAsyncThunk(\n \"objectBrowser/downloadSelected\",\n async (bucketName: string, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const downloadObject = (object: BucketObjectItem) => {\n const identityDownload = encodeURIComponent(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`,\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n object.name,\n object.version_id,\n object.size,\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n }),\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n },\n () => {\n dispatch(\n setSnackBarMessage(\n \"File download will be handled directly by the browser.\",\n ),\n );\n },\n );\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n }),\n );\n };\n\n if (state.objectBrowser.selectedObjects.length !== 0) {\n let itemsToDownload: BucketObjectItem[] = [];\n\n const filterFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n itemsToDownload = state.objectBrowser.records.filter(filterFunction);\n\n // In case just one element is selected, then we trigger download modal validation.\n if (itemsToDownload.length === 1) {\n if (\n itemsToDownload[0].name.length > 200 &&\n getClientOS().toLowerCase().includes(\"win\")\n ) {\n dispatch(setDownloadRenameModal(itemsToDownload[0]));\n return;\n } else {\n downloadObject(itemsToDownload[0]);\n }\n } else {\n if (itemsToDownload.length === 1) {\n downloadObject(itemsToDownload[0]);\n } else if (itemsToDownload.length > 1) {\n const fileName = `${DateTime.now().toFormat(\n \"LL-dd-yyyy-HH-mm-ss\",\n )}_files_list.zip`;\n\n // We are enforcing zip download when multiple files are selected for better user experience\n const multiObjList = itemsToDownload.reduce((dwList: any[], bi) => {\n // Download objects/prefixes(recursively) as zip\n // Skip any deleted files selected via \"Show deleted objects\" in selection and log for debugging\n const isDeleted = bi?.delete_flag;\n if (bi && !isDeleted) {\n dwList.push(bi.name);\n } else {\n console.log(`Skipping ${bi?.name} from download.`);\n }\n return dwList;\n }, []);\n\n await downloadSelectedAsZip(bucketName, multiObjList, fileName);\n return;\n }\n }\n }\n },\n);\n\nexport const openPreview = createAsyncThunk(\n \"objectBrowser/openPreview\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setPreviewOpen(true));\n }\n }\n },\n);\n\nexport const openShare = createAsyncThunk(\n \"objectBrowser/openShare\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setShareFileModalOpen(true));\n }\n }\n },\n);\n\nexport const openAnonymousAccess = createAsyncThunk(\n \"objectBrowser/openAnonymousAccess\",\n async (_, { getState, dispatch }) => {\n const state = getState() as AppState;\n\n if (\n state.objectBrowser.selectedObjects.length === 1 &&\n state.objectBrowser.selectedObjects[0].endsWith(\"/\")\n ) {\n dispatch(setAnonymousAccessOpen(true));\n }\n },\n);\n\nexport const getMaxShareLinkExpTime = createAsyncThunk(\n \"objectBrowser/maxShareLinkExpTime\",\n async (_, { rejectWithValue, dispatch }) => {\n return api.buckets\n .getMaxShareLinkExp()\n .then((res) => {\n dispatch(setMaxShareLinkExpTime(res.data.exp));\n })\n .catch(async (res) => {\n return rejectWithValue(res.error);\n });\n },\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { getClientOS } from \"../../../common/utils\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLongFileOpen,\n setNewObject,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { AppDispatch } from \"../../../store\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { BucketObject } from \"api/consoleApi\";\n\nexport const downloadObject = (\n dispatch: AppDispatch,\n bucketName: string,\n internalPaths: string,\n object: BucketObject,\n) => {\n const identityDownload = encodeURIComponent(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`,\n );\n\n const isWinOs = getClientOS().toLowerCase().includes(\"win\");\n\n if ((object.name?.length || 0) > 200 && isWinOs) {\n dispatch(setLongFileOpen(true));\n return;\n }\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n object.size || 0,\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n }),\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n },\n () => {\n dispatch(\n setSnackBarMessage(\n \"File download will be handled directly by the browser.\",\n ),\n );\n },\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name || \"\",\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n }),\n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button, CopyIcon, InputBox, Box, breakPoints } from \"mds\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n readOnly={true}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n"],"names":["_ref","modalOpen","onClose","bucket","prefilledRoute","dispatch","useAppDispatch","prefix","setPrefix","useState","selectedAccess","setSelectedAccess","useEffect","_jsx","ModalWrapper","title","titleIcon","AddAccessRuleIcon","children","_jsxs","FormLayout","withBorders","containerPadding","InputBox","value","label","id","name","placeholder","onChange","e","target","tooltip","Select","options","disabled","helpTip","Fragment","helpTipPlacement","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","resetForm","trim","createProcess","api","setAccessRuleWithBucket","access","then","res","setSnackBarMessage","catch","setErrorSnackMessage","errorToHandler","error","extractFileExtn","resourceStr","match","getSessionGrantsWildCard","sessionGrants","uploadPath","scopes","arguments","length","undefined","grantsWithExtension","Object","keys","reduce","acc","grantKey","includes","filter","sessionGrantKey","hasScope","some","actionKey","find","scopeKey","wildCardMatch","indexOf","scopeActionKey","substring","isUploadPathMatching","concat","CreatePathModal","withSuspense","React","BreadcrumbsMain","styled","div","display","paddingRight","alignItems","breakPoints","lg","margin","bucketName","internalPaths","hidePathButton","additionalOptions","navigate","useNavigate","rewindEnabled","useSelector","state","objectBrowser","rewind","versionsMode","versionedFile","anonymousMode","system","createFolderOpen","setCreateFolderOpen","canCreateSubpath","setCanCreateSubpath","putObjectPermScopes","IAM_SCOPES","S3_PUT_OBJECT","S3_PUT_ACTIONS","console","session","permissions","paths","splitPaths","split","path","lastBreadcrumbsIndex","pathToCheckPerms","sessionGrantWildCards","forEach","grant","canCreatePath","hasPermission","breadcrumbsMap","map","objectItem","index","subSplit","slice","join","route","encodeURIComponent","className","style","cursor","whiteSpace","safeDecodeURIComponent","Link","to","setVersionsModeEnabled","status","objectName","toString","versionsItem","listBreadcrumbs","folderName","closeAddFolderModal","limitedSubPath","Breadcrumbs","goBackFunction","prevPath","CopyToClipboard","text","icon","CopyIcon","width","height","fill","marginTop","color","border","marginRight","Box","Tooltip","permissionTooltipHelper","NewPathIcon","marginBottom","justifyContent","fontSize","fontWeight","flexDirection","flexWrap","isVersionedMode","forceDisable","uploadFileFunction","uploadFolderFunction","overrideStyles","anchorEl","setAnchorEl","uploadOptionsOpen","uploadOptionsSetOpen","openUploadMenu","Boolean","handleCloseUpload","uploadObjectAllowed","uploadFolderAllowed","uploadEnabled","TooltipWrapper","event","currentTarget","UploadIcon","DropdownSelector","UploadFolderIcon","selectedOption","onSelect","nValue","hideTriggerAction","open","anchorOrigin","useAnchorWidth","closePanel","borderColor","borderWidth","borderStyle","borderRadius","borderBottomLeftRadius","borderBottomRightRadius","transitionDuration","overflowX","overflowY","position","opacity","marginLeft","minWidth","borderLeftWidth","ClosePanelIcon","right","top","padding","backgroundColor","strings","minHeight","overflow","textOverflow","replaceUnicodeChar","extensionToIcon","FileVideoIcon","extensions","FileMusicIcon","FilePdfIcon","FilePptIcon","FileXlsIcon","FileLockIcon","FileCodeIcon","FileConfigIcon","FileDbIcon","FileFontIcon","FileTxtIcon","FileZipIcon","FileBookIcon","FileImageIcon","displayFileIconName","element","returnOnlyIcon","elementString","FileNonType","endsWith","FolderBrowserIcon","lowercaseElement","toLowerCase","etc","ext","FileMissingIcon","splitItem","IconWithLabel","metaData","metaKeys","renderItem","Array","isArray","itemRendererFn","maxHeight","months","days","from","_","num","currentYear","Date","getFullYear","years","numYear","forwardRef","ref","disableOptions","borderBottom","onDateChange","useImperativeHandle","resetDate","month","setMonth","day","setDay","year","setYear","valueSplit","parseInt","isValid","dateString","validDate","currentDate","parse","isNaN","parsedMonth","parsedDay","monthForString","dayForString","parsedDate","toISOString","isDateDisabled","monthForDropDown","daysForDrop","yearsForDrop","gap","InputLabel","htmlFor","placement","HelpIcon","newValue","closeModalAndRefresh","objectInfo","retentionConfig","statusEnabled","setStatusEnabled","setType","date","setDate","isDateValid","setIsDateValid","isSaving","setIsSaving","alreadyConfigured","setAlreadyConfigured","retention_mode","mode","ObjectRetentionMode","Governance","retention_until_date","valueDate","getMonth","getDate","dateElement","useRef","current","showSwitcher","noValidate","autoComplete","onSubmit","preventDefault","Switch","checked","indicatorLabels","RadioGroup","currentValue","selectorOptions","Compliance","DateSelector","saveNewRetentionPolicy","selectedObject","versionId","version_id","expireDate","addRetention","buckets","putObjectRetention","expires","err","setModalErrorSnackMessage","disableRetention","deleteObjectRetention","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","versioningInfo","selectedVersion","deleteLoading","invokeDeleteApi","useApi","onDelSuccess","detailedError","deleteVersions","setDeleteVersions","bypassGovernance","setBypassGovernance","canBypass","S3_BYPASS_GOVERNANCE_RETENTION","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","recursive","confirmationContent","description","actualInfo","legalHoldEnabled","setLegalHoldEnabled","get","putObjectLegalHold","ObjectLegalHoldStatus","Enabled","Disabled","DeleteTag","b","theme","_ref2","_actualInfo$name","onCloseAndUpdate","distributedSetup","selDistSet","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","deleteEnabled","setDeleteEnabled","deleteKey","setDeleteKey","deleteLabel","setDeleteLabel","currentTags","tags","currTagKeys","allPathData","currentItem","pop","tagsFor","plural","iconColor","DisabledIcon","EditTagIcon","container","cancelDelete","deleteTagProcess","cleanObject","verID","putObjectTags","SecureComponent","S3_GET_OBJECT_TAGGING","S3_GET_ACTIONS","resource","flexFlow","tagKey","tag","S3_DELETE_OBJECT_TAGGING","errorProps","deleteIcon","onDelete","Tag","onDeleteTag","S3_PUT_OBJECT_TAGGING","SectionTitle","AddNewTagIcon","separator","addTagProcess","newTag","newTagList","closeInspectModalAndRefresh","inspectOpen","inspectPath","volumeName","isEncrypt","setIsEncrypt","decryptionKey","setDecryptionKey","insFileName","setInsFileName","InspectMenuIcon","async","basename","document","baseURI","replace","window","location","origin","fetch","url","method","makeRequest","ok","resErr","json","errorMessage","message","code","blob","filename","headers","decryptKey","getCookieValue","performDownload","onCloseDecKeyModal","deleteCookie","PasswordKeyIcon","KeyRevealer","closeModal","newFileName","setNewFileName","acceptLongName","setAcceptLongName","EditIcon","downloadObject","doDownload","emptyFile","is_latest","last_modified","legal_hold_status","size","locking","onClosePanel","loadingObjectInfo","shareFileModalOpen","setShareFileModalOpen","retentionModalOpen","setRetentionModalOpen","tagModalOpen","setTagModalOpen","legalholdOpen","setLegalholdOpen","inspectModalOpen","setInspectModalOpen","setActualInfo","allInfoElements","setAllInfoElements","objectToShare","setObjectToShare","versions","setVersions","setDeleteOpen","previewOpen","setPreviewOpen","totalVersionsSize","setTotalVersionsSize","longFileOpen","setLongFileOpen","setMetaData","loadMetadata","setLoadingMetadata","objectNameArray","infoElement","el","is_delete_marker","listObjects","with_versions","result","data","objects","tVersionSize","currValue","resInfo","setLoadingObjectInfo","getObjectMetadata","versionID","metadata","tagKeys","loaderForContainer","textAlign","Loader","objectResources","canSetLegalHold","S3_PUT_OBJECT_LEGAL_HOLD","canSetTags","canChangeRetention","S3_GET_OBJECT_RETENTION","S3_PUT_OBJECT_RETENTION","canInspect","ADMIN_INSPECT_DATA","canChangeVersioning","S3_GET_BUCKET_VERSIONING","S3_PUT_BUCKET_VERSIONING","S3_GET_OBJECT_VERSION","canGetObject","S3_GET_OBJECT","canDelete","S3_DELETE_OBJECT","objectType","previewObjectType","multiActionButtons","action","DownloadIcon","ShareIcon","PreviewIcon","LegalHoldIcon","openRetentionModal","RetentionIcon","TagsIcon","VersionsIcon","ShareFile","closeShareModal","dataObject","SetRetention","updateInfo","DeleteObject","closeAndReload","setLoadingVersions","setSelectedVersion","SetLegalHoldModal","reload","PreviewFileModal","onClosePreview","TagsModal","reloadObjectData","InspectObject","RenameLongFileName","closeFileOpen","textTransform","ActionsList","items","DeleteIcon","iconLocation","fullWidth","SimpleHeader","ObjectInfoIcon","overflowWrap","niceBytes","niceBytesInt","lastModified","currentTime","modifiedTime","difTime","getTime","formatTime","niceDaysInt","calculateLastModifyTime","etag","S3_GET_OBJECT_LEGAL_HOLD","MetadataIcon","ObjectMetaData","versionToRestore","objectPath","restoreOpen","restoreLoading","setRestoreLoading","RecoverIcon","restoreVersion","putObjectRestore","restoreLocalObjectList","confirmButtonProps","bgColor","FileVersionStyled","content","left","borderBottomColor","maxWidth","fileName","versionInfo","isSelected","checkable","isChecked","onCheck","onShare","onDownload","onRestore","onPreview","globalClick","key","disableButtons","versionItemButtons","pill","DateTime","now","fromISO","md","Checkbox","stopPropagation","SpecificVersionPill","button","IconButton","toFormat","setDeleteLoading","typeConfirm","setTypeConfirm","deleteObject","non_current_versions","bypass","selectedVersions","selectedObjectsRequest","deleteMultipleObjects","all_versions","searchVersions","loadingVersions","restoreVersionOpen","setRestoreVersionOpen","setRestoreVersion","sortValue","setSortValue","deleteNonCurrentOpen","setDeleteNonCurrentOpen","selectEnabled","setSelectEnabled","selectedItems","setSelectedItems","delSelectedVOpen","setDelSelectedVOpen","filteredPrefixes","onShareItem","onPreviewItem","onRestoreItem","onDownloadItem","onGlobalClick","filteredRecords","version","totalSpace","sort","a","dateA","dateB","onCheckVersion","filteredItems","cloneState","push","RestoreFileVersion","content_type","DeleteNonCurrent","reloadAfterDelete","DeleteSelectedVersions","reloadOnComplete","ProgressBar","BrowserBreadcrumbs","ScreenTitle","subTitle","actions","SelectMultipleIcon","DeleteNonCurrentIcon","noLabelMinWidth","bottomBorder","flexGrow","List","containerStyle","rowCount","rowHeight","rowRenderer","isScrolling","isVisible","versOrd","FileVersionItem","displayParsedDate","object","currTime","objectTime","hasSame","displayNiceBytes","String","listModeColumns","elementKey","renderFunction","enableSort","renderFullObject","rewindModeColumns","ListObjectsTable","params","useParams","sortDirection","setSortDirection","currentSortField","setCurrentSortField","detailsOpen","objectDetailsOpen","requestInProgress","features","selFeatures","obOnly","records","searchObjects","selectedObjects","connectionError","displayListObjects","S3_LIST_BUCKET","S3_ALL_LIST_BUCKET","sortASC","sortListObjects","payload","reverse","tableActions","_object$name","idElement","newPath","setSelectedObjects","setObjectDetailsView","setSelectedObjectView","sendOnlyId","customPaperHeight","DataTable","itemActions","columns","entityName","idField","targetD","elements","customEmptyMessage","sortEnabled","currentSort","currentDirection","onSortClick","sortData","newSortDirection","sortBy","setReloadObjectsList","onSelectAll","selectAllItems","rowStyle","_payload$index","delete_flag","noBackground","FilterObjectsSB","SearchBox","setSearchObjects","DeleteMultipleObjects","RewindEnable","baseDnDStyle","outline","activeDnDStyle","acceptDnDStyle","ListObjects","_downloadRenameModal$","useLocation","bucketToRewind","showDeleted","selectedInternalPaths","simplePath","versioningConfig","lockingEnabled","downloadRenameModal","selectedPreview","anonymousAccessOpen","_state$objectBrowser","loadingBucket","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","deleteMultipleOpen","setDeleteMultipleOpen","rewindSelect","setRewindSelect","iniLoad","setIniLoad","canShareFile","setCanShareFile","canPreviewFile","setCanPreviewFile","quota","setQuota","isMetaDataLoaded","setIsMetaDataLoaded","isVersioningApplied","pathSegment","pathname","decodeURIComponent","currentPath","i","fileUpload","folderUpload","pathAsResourceInPolicy","allowedFileExtensions","cv","extension","Set","getPolicyAllowedFileExtensions","canDownload","canRewind","canUpload","canSetAnonymousAccess","S3_GET_BUCKET_POLICY","S3_PUT_BUCKET_POLICY","isSelObjectDelMarker","checkForDelMarker","isObjDelMarker","obj","fetchMetadata","useCallback","resetRewind","setAttribute","isPrefix","getBucketQuota","quotaVals","detailedMessage","setBucketDetailsLoad","setBucketInfo","getBucketRetentionConfig","setRetentionConfig","handleUploadButton","files","newFiles","uploadObject","folderPath","pathPrefix","upload","uploadPromise","file","Promise","resolve","reject","uploadUrl","blobFile","Blob","filePath","fileWebkitRelativePath","relativeFolderPath","ID","makeid","prefixPath","finalFolderPath","pathClean","startsWith","identity","Math","random","xhr","XMLHttpRequest","setRequestHeader","areMultipleFiles","errorMessages","withCredentials","onload","completeObject","removeTrace","response","JSON","failObject","instanceID","msg","addEventListener","progress","floor","loaded","total","updateProgress","onerror","onloadend","onabort","cancelObjectInList","formData","FormData","append","storeCallForObjectWithID","setNewObject","done","percentage","waitingForFile","failed","cancelled","storeFormDataWithID","uploadFilePromises","openList","allSettled","results","errors","totalFiles","successUploadedFiles","onDrop","acceptedFiles","newFolderPath","allowedFiles","fileExtn","log","getRootProps","getInputProps","isDragActive","isDragAccept","useDropzone","noClick","dndStyles","useMemo","forceRefresh","splitURLS","URLItem","createdTime","creation_date","downloadToolTip","downloadSelected","openShare","openPreview","openAnonymousAccess","AccessRuleIcon","setSelectedPreview","refresh","versioning","rewindCloseModal","closePreviewWindow","closeRenameModal","setDownloadRenameModal","AddAccessRule","closeAddAccessRule","setAnonymousAccessOpen","PageLayout","paddingBottom","BucketsIcon","Badge","dotOnly","invisible","HistoryIcon","RefreshIcon","resetMessages","multiple","accept","UploadFilesButton","closeMenu","click","borderTop","VersionsNavigator","setDeletedAction","setShowDeletedObjects","DetailsListPanel","ObjectDetailPanel","configureBucketAllowed","S3_GET_BUCKET_ENCRYPTION_CONFIGURATION","S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION","S3_DELETE_BUCKET","S3_GET_BUCKET_NOTIFICATIONS","S3_PUT_BUCKET_NOTIFICATIONS","S3_GET_REPLICATION_CONFIGURATION","S3_PUT_REPLICATION_CONFIGURATION","S3_GET_LIFECYCLE_CONFIGURATION","S3_PUT_LIFECYCLE_CONFIGURATION","ADMIN_GET_BUCKET_QUOTA","ADMIN_SET_BUCKET_QUOTA","S3_PUT_BUCKET_TAGGING","S3_GET_BUCKET_TAGGING","S3_LIST_BUCKET_VERSIONS","S3_GET_BUCKET_POLICY_STATUS","S3_DELETE_BUCKET_POLICY","searchBar","setSearchVersions","setHelpName","AutoColorIcon","ObjectManagerButton","PageHeaderWrapper","BackLink","IAM_PAGES","OBJECT_BROWSER_VIEW","IAM_PERMISSIONS","IAM_ROLES","BUCKET_ADMIN","SettingsIcon","HelpMenu","middleComponent","BrowserHandler","loadingVersioning","rewindDate","dateToRewind","loadingLocking","reloadObjectsList","initWSRequest","rewindMode","pathLoad","forceLoad","searchPath","setRequestInProgress","setLoadingVersioning","setLoadingLocking","getBucketVersioning","setIsVersioned","getBucketObjectLockingStatus","setLockingEnabled","object_locking_enabled","OBHeader","initialDate","maxSeconds","entity","maxDays","maxHours","maxMinutes","selectedDays","setSelectedDays","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","setValidDate","dateSelected","setDateSelected","calculateNewTime","hours","minutes","fromJSDate","plus","formattedDate","valid","extraStyles","paddingLeft","min","max","LinkIcon","maxshareLinkExpTimeVal","maxShareLinkExpTime","shareURL","setShareURL","isLoadingVersion","setIsLoadingVersion","isLoadingFile","setIsLoadingFile","selectedDate","setSelectedDate","dateValid","setDateValid","setVersionID","getMaxShareLinkExpTime","latestVersion","elem","slDate","currDate","diffDate","ceil","shareObject","niceTimeFromSeconds","DaysSelector","dateChanged","newDate","ReadBox","actionButton","setModalSnackMessage","pdfjs","GlobalWorkerOptions","workerSrc","loading","onLoad","downloadFile","errorState","setErrorState","totalPages","setTotalPages","renderPages","arrayCreate","InformativeMessage","Document","onLoadSuccess","_pdfInfo","numPages","onLoadError","Page","pageNumber","renderAnnotationLayer","renderTextLayer","renderForms","isFullscreen","setLoading","iframeLoaded","flex","autoPlay","controls","muted","playsInline","onPlay","src","alt","PreviewPDF","allowTransparency","wideLimit","ObjectPreviewIcon","PreviewFileContent","WrappedComponent","fallback","props","Suspense","createAsyncThunk","getState","rejectWithValue","identityDownload","downloadCall","download","itemsToDownload","filterFunction","getClientOS","multiObjList","dwList","bi","isDeleted","downloadSelectedAsZip","fileObject","findFunction","_ref3","_ref4","_ref5","getMaxShareLinkExp","setMaxShareLinkExpTime","exp","isWinOs","shown","setShown","sm","overlayIcon","readOnly","overlayAction","navigator","clipboard","writeText"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/3527.30ec1659.chunk.js b/web-app/build/static/js/3527.30ec1659.chunk.js deleted file mode 100644 index 56ff05d3c..000000000 --- a/web-app/build/static/js/3527.30ec1659.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[3527,8823],{18823:(e,s,t)=>{t.r(s),t.d(s,{default:()=>x});var n=t(65043),a=t(58661),r=t(89923),i=t(56483),c=t(64159),o=t(20554),l=t(56629),d=t(53518),u=t(70579);const x=e=>{let{closeDeleteModalAndRefresh:s,deleteOpen:t,selectedServiceAccount:x}=e;const h=(0,o.jL)(),[p,m]=(0,n.useState)(!1);if(!x)return null;return(0,u.jsx)(a.A,{title:"Delete Access Key",confirmText:"Delete",isOpen:t,titleIcon:(0,u.jsx)(r.xWY,{}),isLoading:p,onConfirm:()=>{m(!0),l.F.serviceAccounts.deleteServiceAccount((0,i.nf)(x)).then((e=>{s(!0)})).catch((async e=>{const t=await e.json();h((0,c.C9)((0,d.S)(t))),s(!1)})).finally((()=>m(!1)))},onClose:()=>s(!1),confirmationContent:(0,u.jsxs)(n.Fragment,{children:["Are you sure you want to delete Access Key"," ",(0,u.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:x}),"?"]})})}},78619:(e,s,t)=>{t.d(s,{A:()=>A});var n=t(65043),a=t(33097),r=t.n(a),i=t(94574),c=t(89923),o=t(94141),l=t(61476),d=t.n(l),u=t(64159),x=t(20554),h=t(70579);const p=e=>{let{label:s="",value:t=""}=e;const n=(0,x.jL)();return(0,h.jsxs)(c.azJ,{sx:{marginTop:12},children:[(0,h.jsx)(c.l1Y,{children:s}),(0,h.jsx)(c.EmB,{actionButton:(0,h.jsx)(d(),{text:t,children:(0,h.jsx)(c.$nd,{id:"copy-path",variant:"regular",onClick:()=>{n((0,u.h0)("".concat(s," copied to clipboard")))},style:{marginRight:"5px",width:"28px",height:"28px",padding:"0px"},icon:(0,h.jsx)(c.TdU,{})})}),children:t})]})};var m=t(6681),j=t(77403);const y=i.Ay.div((e=>{let{theme:s}=e;return{color:r()(s,"signalColors.danger","#C51B3F"),fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}}})),g=(e,s)=>{let t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+s),t.setAttribute("download",e),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)},A=e=>{let{newServiceAccount:s,open:t,closeModal:a,entity:i}=e;if(!s)return null;const l=r()(s,"console",null),d=r()(s,"idp",!1);return(0,h.jsx)(o.A,{modalOpen:t,onClose:()=>{a()},title:"New ".concat(i," Created"),titleIcon:(0,h.jsx)(c.kQt,{}),children:(0,h.jsxs)(c.xA9,{container:!0,children:[(0,h.jsxs)(c.xA9,{item:!0,xs:12,children:["A new ",i," has been created with the following details:",!d&&l&&(0,h.jsx)(n.Fragment,{children:(0,h.jsxs)(c.xA9,{item:!0,xs:12,sx:{overflowY:"auto",maxHeight:350},children:[(0,h.jsx)(c.azJ,{sx:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},children:"Console Credentials"}),Array.isArray(l)&&l.map(((e,s)=>(0,h.jsxs)(n.Fragment,{children:[(0,h.jsx)(p,{label:"Access Key",value:e.accessKey}),(0,h.jsx)(p,{label:"Secret Key",value:e.secretKey})]}))),!Array.isArray(l)&&(0,h.jsxs)(n.Fragment,{children:[(0,h.jsx)(p,{label:"Access Key",value:l.accessKey}),(0,h.jsx)(p,{label:"Secret Key",value:l.secretKey})]})]})}),(null===l||void 0===l)&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(p,{label:"Access Key",value:s.accessKey||""}),(0,h.jsx)(p,{label:"Secret Key",value:s.secretKey||""})]}),d?(0,h.jsx)(y,{children:"Please Login via the configured external identity provider."}):(0,h.jsxs)(y,{children:[(0,h.jsx)(c.cJw,{}),(0,h.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,h.jsx)(c.xA9,{item:!0,xs:12,sx:{...j.Uz.modalButtonBar},children:!d&&(0,h.jsxs)(n.Fragment,{children:[(0,h.jsx)(m.A,{tooltip:"Download credentials in a JSON file formatted for import using mc alias import. This will only include the default login credentials.",children:(0,h.jsx)(c.$nd,{id:"download-button",label:"Download for import",onClick:()=>{let e={};if(l)if(Array.isArray(l)){e=l.map((e=>({url:e.url,accessKey:e.accessKey,secretKey:e.secretKey,api:"s3v4",path:"auto"})))[0]}else e={url:l.url,accessKey:l.accessKey,secretKey:l.secretKey,api:"s3v4",path:"auto"};else e={url:s.url,accessKey:s.accessKey,secretKey:s.secretKey,api:"s3v4",path:"auto"};g("credentials.json",JSON.stringify({...e}))},icon:(0,h.jsx)(c.s3U,{}),variant:"callAction"})}),Array.isArray(l)&&l.length>1&&(0,h.jsx)(m.A,{tooltip:"Download all access credentials to a JSON file. NOTE: This file is not formatted for import using mc alias import. If you plan to import this alias from the file, please use the Download for Import button. ",children:(0,h.jsx)(c.$nd,{id:"download-all-button",label:"Download all access credentials",onClick:()=>{let e={};if(l&&Array.isArray(l)&&l.length>1){e=l.map((e=>({accessKey:e.accessKey,secretKey:e.secretKey})))}g("all_credentials.json",JSON.stringify({...e}))},icon:(0,h.jsx)(c.s3U,{}),variant:"callAction",color:"primary"})})]})})]})})}},11441:(e,s,t)=>{t.d(s,{A:()=>i});t(65043);var n=t(94574),a=t(70579);const r=n.Ay.h1((()=>({padding:0,margin:0,fontSize:".9rem"}))),i=e=>{let{children:s}=e;return(0,a.jsx)(r,{children:s})}},42967:(e,s,t)=>{t.d(s,{A:()=>h});var n=t(65043),a=t(89923),r=t(8185),i=t(64681),c=t(64159),o=t(20554),l=t(62560),d=t(22166),u=t(56629),x=t(70579);const h=e=>{let{noTitle:s=!1}=e;const t=(0,o.jL)(),[h,p]=(0,n.useState)([]),[m,j]=(0,n.useState)(!1),[y,g]=(0,n.useState)(""),A=(0,d.d4)((e=>e.createUser.selectedPolicies)),f=(0,n.useCallback)((()=>{j(!0),u.F.policies.listPolicies().then((e=>{var s;const t=null!==(s=e.data.policies)&&void 0!==s?s:[];j(!1),p(t.sort(r.Hw))})).catch((e=>{j(!1),t((0,c.Dy)(e))}))}),[t]);(0,n.useEffect)((()=>{j(!0)}),[]),(0,n.useEffect)((()=>{m&&f()}),[m,f]);const b=h.filter((e=>e.name.includes(y)));return(0,x.jsxs)(a.xA9,{item:!0,xs:12,className:"inputItem",children:[m&&(0,x.jsx)(a.z21,{}),h.length>0?(0,x.jsxs)(n.Fragment,{children:[(0,x.jsx)(a.xA9,{item:!0,xs:12,className:"inputItem",children:(0,x.jsx)(i.A,{placeholder:"Start typing to search for a Policy",onChange:e=>{g(e)},value:y,label:s?"":"Assign Policies"})}),(0,x.jsx)(a.bQt,{columns:[{label:"Policy",elementKey:"name"}],onSelect:e=>{const s=e.target,n=s.value,a=s.checked;let r=[...A];a?r.push(n):r=r.filter((e=>e!==n)),r=r.filter((e=>""!==e)),t((0,l.Gy)(r))},selectedItems:A,isLoading:m,records:b,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,x.jsx)(a.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},56071:(e,s,t)=>{t.r(s),t.d(s,{default:()=>p});var n=t(65043),a=t(73216),r=t(64159),i=t(89923),c=t(56483),o=t(99161),l=t(58661),d=t(20554),u=t(56629),x=t(53518),h=t(70579);const p=e=>{let{closeDeleteModalAndRefresh:s,deleteOpen:t,selectedUsers:p}=e;const m=(0,a.Zp)(),j=(0,d.jL)(),y=()=>s(!1),[g,A]=(0,n.useState)(!0),[f,b]=(0,n.useState)(!1),[S,v]=(0,n.useState)([]),[C,_]=(0,n.useState)(!1),E=localStorage.getItem("userLoggedIn")||"";if((0,n.useEffect)((()=>{p&&u.F.users.checkUserServiceAccounts(p).then((e=>{var s;e.data&&(v(null!==(s=e.data.userServiceAccountList)&&void 0!==s?s:[]),e.data.hasSA&&b(!0))})).catch((e=>j((0,r.C9)((0,x.S)(e.error))))).finally((()=>A(!1)))}),[p,j]),!p)return null;const w=p.map((e=>(0,h.jsx)("div",{children:(0,h.jsx)("b",{children:e})},e))),U=[{type:"view",onClick:e=>{m("".concat(o.zZ.USERS,"/").concat((0,c.nf)(e.userName))),y()}}],O="Are you sure you want to delete the following "+p.length+" user"+(p.length>1?"s?":"?");return(0,h.jsx)(l.A,{title:"Delete User".concat(p.length>1?"s":""),confirmText:"Delete",isOpen:t,titleIcon:(0,h.jsx)(i.xWY,{}),isLoading:C,onConfirm:()=>{for(let e of p)e===E?(j((0,r.C9)({errorMessage:"Cannot delete currently logged in user",detailedError:"Cannot delete currently logged in user ".concat(E)})),s(!0)):u.F.user.removeUser((0,c.nf)(e)).then((e=>{s(!0),m("".concat(o.zZ.USERS))})).finally((()=>_(!1)))},onClose:y,confirmationContent:g?(0,h.jsx)(i.aHM,{}):(0,h.jsx)(n.Fragment,{children:f?(0,h.jsxs)(n.Fragment,{children:[(0,h.jsx)(i.Wei,{variant:"warning",message:(0,h.jsxs)(n.Fragment,{children:["Click on a user to view the full listing of associated Access Keys. All Access Keys associated with a user will be deleted along with the user.",(0,h.jsx)("br",{}),(0,h.jsx)("br",{}),(0,h.jsx)("strong",{children:"Are you sure you want to continue?"})]}),title:"Warning: One or more users selected has associated Access Keys.",sx:{margin:"15px 0"}}),(0,h.jsx)(i.bQt,{itemActions:U,columns:[{label:"Username",elementKey:"userName"},{label:"# Associated Access Keys",elementKey:"numSAs"}],isLoading:g,records:S,entityName:"User Access Keys",idField:"userName",customPaperHeight:"250"})]}):(0,h.jsxs)(n.Fragment,{children:[O,w]})})})}},13109:(e,s,t)=>{t.d(s,{A:()=>h});var n=t(65043),a=t(33097),r=t.n(a),i=t(89923),c=t(8185),o=t(64159),l=t(20554),d=t(20649),u=t(64681),x=t(70579);const h=e=>{let{selectedGroups:s,setSelectedGroups:t}=e;const a=(0,l.jL)(),[h,p]=(0,n.useState)([]),[m,j]=(0,n.useState)(!1),[y,g]=(0,n.useState)(""),A=(0,n.useCallback)((()=>{d.A.invoke("GET","/api/v1/groups").then((e=>{let s=r()(e,"groups",[]);s||(s=[]),p(s.sort(c.SO)),j(!1)})).catch((e=>{a((0,o.Dy)(e)),j(!1)}))}),[a]);(0,n.useEffect)((()=>{j(!0)}),[]),(0,n.useEffect)((()=>{m&&A()}),[m,A]);const f=s||[],b=h.filter((e=>e.includes(y)));return(0,x.jsxs)(i.xA9,{item:!0,xs:12,className:"inputItem",children:[m&&(0,x.jsx)(i.z21,{}),null!==h&&h.length>0?(0,x.jsxs)(n.Fragment,{children:[(0,x.jsx)(i.xA9,{item:!0,xs:12,className:"inputItem",children:(0,x.jsx)(u.A,{placeholder:"Start typing to search for Groups",onChange:g,value:y,label:"Assign Groups"})}),(0,x.jsx)(i.bQt,{columns:[{label:"Group"}],onSelect:e=>{const s=e.target,n=s.value,a=s.checked;let r=[...f];return a?r.push(n):r=r.filter((e=>e!==n)),t(r),r},selectedItems:f,isLoading:m,records:b,entityName:"Groups",idField:"",customPaperHeight:"200px"})]}):(0,x.jsx)(i.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Groups Available"})]})}},43527:(e,s,t)=>{t.r(s),t.d(s,{default:()=>ee});var n=t(65043),a=t(73216),r=t(39808),i=t(89923),c=t(8185),o=t(77403),l=t(56483),d=t(99161),u=t(20649),x=t(64681),h=t(72237),p=t(77938),m=t(64159),j=t(20554),y=t(6681),g=t(48793),A=t(55968),f=t(70579);const b=(0,h.A)(n.lazy((()=>Promise.resolve().then(t.bind(t,56071))))),S=(0,h.A)(n.lazy((()=>t.e(24).then(t.bind(t,60024))))),v=()=>{const e=(0,j.jL)(),s=(0,a.Zp)(),[t,r]=(0,n.useState)([]),[h,v]=(0,n.useState)(!0),[C,_]=(0,n.useState)(!1),[E,w]=(0,n.useState)(!1),[U,O]=(0,n.useState)(""),[I,M]=(0,n.useState)([]),K=(0,p._)(d.Ms,d.x6),R=(0,p._)(d.Ms,d.Ld),D=(0,p._)(d.Ms,d.BD),k=(0,p._)(d.Ms,d.Dg);(0,n.useEffect)((()=>{h&&(K?u.A.invoke("GET","/api/v1/users").then((e=>{const s=null===e.users?[]:e.users;v(!1),r(s.sort(c.LA))})).catch((s=>{v(!1),e((0,m.C9)(s))})):v(!1))}),[h,e,K]);const P=t.filter((e=>e.accessKey.includes(U))),z=e=>{s("".concat(d.zZ.USERS,"/").concat((0,l.nf)(e.accessKey)))},N=[{type:"view",onClick:z,disableButtonFunction:()=>!R},{type:"edit",onClick:z,disableButtonFunction:()=>!R}];return(0,n.useEffect)((()=>{e((0,m.ph)("list_users"))}),[]),(0,f.jsxs)(n.Fragment,{children:[C&&(0,f.jsx)(b,{deleteOpen:C,selectedUsers:I,closeDeleteModalAndRefresh:e=>{(e=>{_(!1),e&&(v(!0),M([]))})(e)}}),E&&(0,f.jsx)(S,{open:E,checkedUsers:I,closeModalAndRefresh:e=>{!function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];w(!1),e&&M([])}(e)}}),(0,f.jsx)(g.A,{label:"Users",actions:(0,f.jsx)(A.A,{})}),(0,f.jsx)(i.Mxu,{children:(0,f.jsxs)(i.xA9,{container:!0,children:[(0,f.jsxs)(i.xA9,{item:!0,xs:12,sx:o._0.actionsTray,children:[(0,f.jsx)(x.A,{placeholder:"Search Users",onChange:O,value:U,sx:{marginRight:"auto",maxWidth:380}}),(0,f.jsx)(p.R,{resource:d.Ms,scopes:[d.OV.ADMIN_DELETE_USER],matchAll:!0,errorProps:{disabled:!0},children:(0,f.jsx)(y.A,{tooltip:(0,p._)("console",[d.OV.ADMIN_DELETE_USER])?0===I.length?"Select Users to delete":"Delete Selected":(0,d.vj)([d.OV.ADMIN_DELETE_USER],"delete users"),children:(0,f.jsx)(i.$nd,{id:"delete-selected-users",onClick:()=>{_(!0)},label:"Delete Selected",icon:(0,f.jsx)(i.d7y,{}),disabled:0===I.length,variant:"secondary","aria-label":"delete-selected-users"})})}),(0,f.jsx)(p.R,{scopes:[d.OV.ADMIN_ADD_USER_TO_GROUP],resource:d.Ms,errorProps:{disabled:!0},children:(0,f.jsx)(y.A,{tooltip:(0,p._)("console",[d.OV.ADMIN_ADD_USER_TO_GROUP])?0===I.length?"Select Users to group":"Add to Group":(0,d.vj)([d.OV.ADMIN_ADD_USER_TO_GROUP],"add users to groups"),children:(0,f.jsx)(i.$nd,{id:"add-to-group",label:"Add to Group",icon:(0,f.jsx)(i.YXz,{}),disabled:I.length<=0,onClick:()=>{I.length>0&&w(!0)},variant:"regular"})})}),(0,f.jsx)(p.R,{scopes:[d.OV.ADMIN_CREATE_USER,d.OV.ADMIN_LIST_USER_POLICIES,d.OV.ADMIN_LIST_GROUPS],resource:d.HD,matchAll:!0,errorProps:{disabled:!0},children:(0,f.jsx)(y.A,{tooltip:(0,p._)("console-ui",[d.OV.ADMIN_CREATE_USER,d.OV.ADMIN_LIST_USER_POLICIES,d.OV.ADMIN_LIST_GROUPS,d.OV.ADMIN_ATTACH_USER_OR_GROUP_POLICY],!0)?"Create User":(0,d.vj)([d.OV.ADMIN_CREATE_USER,d.OV.ADMIN_LIST_USER_POLICIES,d.OV.ADMIN_LIST_GROUPS,d.OV.ADMIN_ATTACH_USER_OR_GROUP_POLICY],"create users"),children:(0,f.jsx)(i.$nd,{id:"create-user",label:"Create User",icon:(0,f.jsx)(i.REV,{}),onClick:()=>{s("".concat(d.zZ.USER_ADD))},variant:"callAction",disabled:!(0,p._)("console-ui",[d.OV.ADMIN_CREATE_USER,d.OV.ADMIN_LIST_USER_POLICIES,d.OV.ADMIN_LIST_GROUPS,d.OV.ADMIN_ATTACH_USER_OR_GROUP_POLICY],!0)})})})]}),h&&(0,f.jsx)(i.z21,{}),!h&&(0,f.jsxs)(n.Fragment,{children:[t.length>0&&(0,f.jsxs)(n.Fragment,{children:[(0,f.jsx)(i.xA9,{item:!0,xs:12,sx:{marginBottom:15},children:(0,f.jsx)(p.R,{scopes:[d.OV.ADMIN_LIST_USERS],resource:d.Ms,errorProps:{disabled:!0},children:(0,f.jsx)(i.bQt,{itemActions:N,columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:D||k?e=>{const{target:{value:s="",checked:t=!1}={}}=e;let n=[...I];return t?n.push(s):n=n.filter((e=>e!==s)),M(n),n}:void 0,selectedItems:I,isLoading:h,records:P,entityName:"Users",idField:"accessKey"})})}),(0,f.jsx)(i.lVp,{title:"Users",iconComponent:(0,f.jsx)(i.c2u,{}),help:(0,f.jsxs)(n.Fragment,{children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,f.jsx)("br",{}),"Groups provide a simplified method for managing shared permissions among users with common access patterns and workloads.",(0,f.jsx)("br",{}),(0,f.jsx)("br",{}),"Users inherit access permissions to data and resources through the groups they belong to.",(0,f.jsx)("br",{}),"MinIO uses Policy-Based Access Control (PBAC) to define the authorized actions and resources to which an authenticated user has access. Each policy describes one or more actions and conditions that outline the permissions of a user or group of users.",(0,f.jsx)("br",{}),(0,f.jsx)("br",{}),"Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default.",(0,f.jsx)("br",{}),(0,f.jsx)("br",{}),"You can learn more at our"," ",(0,f.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/minio-user-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})]}),0===t.length&&(0,f.jsx)(i.xA9,{container:!0,children:(0,f.jsx)(i.xA9,{item:!0,xs:8,children:(0,f.jsx)(i.lVp,{title:"Users",iconComponent:(0,f.jsx)(i.c2u,{}),help:(0,f.jsxs)(n.Fragment,{children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,f.jsx)("br",{}),"Groups provide a simplified method for managing shared permissions among users with common access patterns and workloads.",(0,f.jsx)("br",{}),(0,f.jsx)("br",{}),"Users inherit access permissions to data and resources through the groups they belong to.",(0,f.jsx)("br",{}),"MinIO uses Policy-Based Access Control (PBAC) to define the authorized actions and resources to which an authenticated user has access. Each policy describes one or more actions and conditions that outline the permissions of a user or group of users.",(0,f.jsx)("br",{}),(0,f.jsx)("br",{}),"Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default.",(0,f.jsxs)(p.R,{scopes:[d.OV.ADMIN_CREATE_USER,d.OV.ADMIN_LIST_USER_POLICIES,d.OV.ADMIN_LIST_GROUPS],matchAll:!0,resource:d.Ms,children:[(0,f.jsx)("br",{}),(0,f.jsx)("br",{}),"To get started,"," ",(0,f.jsx)(i.t53,{onClick:()=>{s("".concat(d.zZ.USER_ADD))},children:"Create a User"}),"."]})]})})})})]})]})})]})};var C=t(13109),_=t(94141);const E=e=>{let{closeModalAndRefresh:s,selectedUser:t,open:a}=e;const r=(0,j.jL)(),[c,d]=(0,n.useState)(!1),[x,h]=(0,n.useState)(""),[p,y]=(0,n.useState)(""),[g,A]=(0,n.useState)(!1),[b,S]=(0,n.useState)([]),v=(0,n.useCallback)((()=>{if(!t)return null;u.A.invoke("GET","/api/v1/user/".concat((0,l.nf)(t))).then((e=>{d(!1),h(e.accessKey),S(e.memberOf||[]),A("enabled"===e.status)})).catch((e=>{d(!1),r((0,m.Dy)(e))}))}),[t,r]);(0,n.useEffect)((()=>{null===t?(h(""),y(""),S([])):v()}),[t,v]);const E=""!==x.trim()&&(""!==p.trim()&&null===t||null!==t);return(0,f.jsx)(_.A,{onClose:()=>{s()},modalOpen:a,title:"Set Groups",titleIcon:(0,f.jsx)(i.WC,{}),children:(0,f.jsx)(n.Fragment,{children:(0,f.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{e.preventDefault(),c||(d(!0),null!==t?u.A.invoke("PUT","/api/v1/user/".concat((0,l.nf)(t)),{status:g?"enabled":"disabled",groups:b}).then((e=>{d(!1),s()})).catch((e=>{d(!1),r((0,m.Dy)(e))})):u.A.invoke("POST","/api/v1/users",{accessKey:x,secretKey:p,groups:b}).then((e=>{d(!1),s()})).catch((e=>{d(!1),r((0,m.Dy)(e))})))},children:[(0,f.jsx)(i.Hbc,{withBorders:!1,containerPadding:!1,children:(0,f.jsx)(C.A,{selectedGroups:b,setSelectedGroups:e=>{S(e)}})}),(0,f.jsxs)(i.azJ,{sx:o.Uz.modalButtonBar,children:[(0,f.jsx)(i.$nd,{id:"clear-change-user-groups",type:"button",variant:"regular",onClick:()=>{null===t?(h(""),y(""),S([])):S([])},label:"Clear"}),(0,f.jsx)(i.$nd,{id:"save-user-groups",type:"submit",variant:"callAction",disabled:c||!E,label:"Save"})]}),c&&(0,f.jsx)(i.xA9,{item:!0,xs:12,children:(0,f.jsx)(i.z21,{})})]})})})};var w=t(22166),U=t(62560),O=t(42967);const I=e=>{let{closeModalAndRefresh:s,selectedUser:t,currentPolicies:a,open:r}=e;const c=(0,j.jL)(),[l,d]=(0,n.useState)(!1),[x,h]=(0,n.useState)([]),p=(0,w.d4)((e=>e.createUser.selectedPolicies));return(0,n.useEffect)((()=>{if(r){const e=a.map((e=>e.policy));h(e),c((0,U.Gy)(e))}}),[r,t]),(0,f.jsxs)(_.A,{onClose:()=>{s()},modalOpen:r,title:"Set Policies",titleIcon:(0,f.jsx)(i.n$X,{}),children:[(0,f.jsx)(i.Hbc,{withBorders:!1,containerPadding:!1,children:(0,f.jsx)(O.A,{selectedPolicy:p})}),(0,f.jsxs)(i.azJ,{sx:o.Uz.modalButtonBar,children:[(0,f.jsx)(i.$nd,{id:"reset-user-policies",type:"button",variant:"regular",color:"primary",onClick:()=>{c((0,U.Gy)(x))},label:"Reset"}),(0,f.jsx)(i.$nd,{id:"save-user-policy",type:"button",variant:"callAction",color:"primary",disabled:l,onClick:()=>{let e=t;d(!0),u.A.invoke("PUT","/api/v1/set-policy",{name:p,entityName:e,entityType:"user"}).then((()=>{d(!1),c((0,U.Gy)([])),s()})).catch((e=>{d(!1),c((0,m.Dy)(e))}))},label:"Save"})]}),l&&(0,f.jsx)(i.xA9,{item:!0,xs:12,children:(0,f.jsx)(i.z21,{})})]})};var M=t(18823),K=t(78619),R=t(68045),D=t(45479),k=t(10158),P=t(99956);const z=e=>{let{user:s,hasPolicy:t}=e;const r=(0,j.jL)(),o=(0,a.Zp)(),[x,h]=(0,n.useState)([]),[g,A]=(0,n.useState)(!1),[b,S]=(0,n.useState)(!1),[v,C]=(0,n.useState)(null),[_,E]=(0,n.useState)(!1),[w,U]=(0,n.useState)(null),[O,I]=(0,n.useState)([]),[z,N]=(0,n.useState)(!1),[T,L]=(0,n.useState)(!1);(0,n.useEffect)((()=>{F()}),[]),(0,n.useEffect)((()=>{g&&u.A.invoke("GET","/api/v1/user/".concat((0,l.nf)(s),"/service-accounts")).then((e=>{A(!1);const s=e.sort(c.LA);h(s)})).catch((e=>{r((0,m.C9)(e)),A(!1)}))}),[g,A,h,s,r]);const F=()=>{A(!0)},G=e=>{C(e),L(!0)},J=[{type:"view",onClick:e=>{e&&G(e.accessKey)}},{type:"delete",onClick:e=>{e&&(e=>{C(e),S(!0)})(e.accessKey)}},{type:"edit",onClick:e=>{e&&G(e.accessKey)}}];return(0,n.useEffect)((()=>{r((0,m.ph)("user_details_accounts"))}),[]),(0,f.jsxs)(n.Fragment,{children:[b&&(0,f.jsx)(M.default,{deleteOpen:b,selectedServiceAccount:v,closeDeleteModalAndRefresh:e=>{(e=>{S(!1),e&&F()})(e)}}),z&&(0,f.jsx)(R.A,{deleteOpen:z,selectedSAs:O,closeDeleteModalAndRefresh:e=>{N(!1),e&&(r((0,m.Hk)("Access Keys deleted successfully.")),I([]),A(!0))}}),_&&(0,f.jsx)(K.A,{newServiceAccount:w,open:_,closeModal:()=>{E(!1),U(null)},entity:"Access Key"}),T&&(0,f.jsx)(k.A,{open:T,selectedAccessKey:v,closeModalAndRefresh:()=>{L(!1),A(!0)}}),(0,f.jsx)(i._xt,{separator:!0,sx:{marginBottom:15},actions:(0,f.jsxs)(i.azJ,{sx:{display:"flex",justifyContent:"flex-end",gap:10},children:[(0,f.jsx)(y.A,{tooltip:"Delete Selected",children:(0,f.jsx)(i.$nd,{id:"delete-selected",onClick:()=>{N(!0)},label:"Delete Selected",icon:(0,f.jsx)(i.d7y,{}),disabled:0===O.length,variant:"secondary"})}),(0,f.jsx)(p.R,{scopes:[d.OV.ADMIN_CREATE_SERVICEACCOUNT,d.OV.ADMIN_UPDATE_SERVICEACCOUNT,d.OV.ADMIN_REMOVE_SERVICEACCOUNT,d.OV.ADMIN_LIST_SERVICEACCOUNTS],resource:d.Ms,matchAll:!0,errorProps:{disabled:!0},children:(0,f.jsx)(y.A,{tooltip:"Create Access Key",children:(0,f.jsx)(i.$nd,{id:"create-service-account",label:"Create Access Key",variant:"callAction",icon:(0,f.jsx)(i.REV,{}),onClick:()=>{o("/identity/users/new-user-sa/".concat((0,l.nf)(s)))},disabled:!t})})})]}),children:"Access Keys"}),(0,f.jsx)(i.bQt,{itemActions:J,entityName:"Access Keys",columns:P.X,onSelect:e=>(0,D.Qm)(e,I,O),selectedItems:O,isLoading:g,records:x,idField:"accessKey"})]})};var N=t(56629),T=t(53518);const L=e=>{let{open:s,userName:t,closeModal:a}=e;const r=(0,j.jL)(),[c,l]=(0,n.useState)(""),[d,u]=(0,n.useState)(""),[x,h]=(0,n.useState)(!1);return s?(0,f.jsx)(_.A,{title:"Change User Password",modalOpen:s,onClose:()=>{l(""),u(""),a()},titleIcon:(0,f.jsx)(i.Fwq,{}),children:(0,f.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{if(e.preventDefault(),x)return;if(h(!0),c.length<8)return r((0,m.Dy)({errorMessage:"Passwords must be at least 8 characters long",detailedError:""})),void h(!1);let s={selectedUser:t,newSecretKey:c};N.F.account.changeUserPassword(s).then((e=>{h(!1),l(""),u(""),r((0,m.Hk)("Successfully updated the password for the user ".concat(t,"."))),a()})).catch((async e=>{h(!1),l(""),u("");const s=await e.json();r((0,m.C9)((0,T.S)(s)))}))})(e)},children:(0,f.jsxs)(i.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,f.jsxs)(i.azJ,{sx:{margin:"10px 0 20px"},children:["Change password for: ",(0,f.jsx)("strong",{children:t})]}),(0,f.jsx)(i.cl_,{id:"new-password",name:"new-password",onChange:e=>{l(e.target.value)},label:"New Password",type:"password",value:c}),(0,f.jsx)(i.cl_,{id:"re-new-password",name:"re-new-password",onChange:e=>{u(e.target.value)},label:"Type New Password Again",type:"password",value:d}),(0,f.jsx)(i.azJ,{sx:o.Uz.modalButtonBar,children:(0,f.jsx)(i.$nd,{id:"save-user-password",type:"submit",variant:"callAction",color:"primary",disabled:x||!(d.length>0&&c===d),label:"Save"})}),x&&(0,f.jsx)(i.azJ,{children:(0,f.jsx)(i.z21,{})})]})})}):null};var F=t(56071);const G=()=>{const e=(0,j.jL)(),s=(0,a.g)(),t=(0,a.Zp)(),[r,o]=(0,n.useState)(!1),[x,h]=(0,n.useState)(!1),[b,S]=(0,n.useState)(!1),[v,C]=(0,n.useState)(!1),[_,w]=(0,n.useState)(!1),[U,O]=(0,n.useState)([]),[M,K]=(0,n.useState)([]),[R,D]=(0,n.useState)([]),[k,P]=(0,n.useState)(!1),[N,T]=(0,n.useState)(!1),[G,J]=(0,n.useState)(!1),[B,V]=(0,n.useState)("groups"),$=(0,p._)(d.Ms,d.Ho)&&!_,H=(0,p._)(d.Ms,d.m0)&&_,Y=(0,l.x6)(s.userName||""),Z=localStorage.getItem("userLoggedIn")||"",W=(0,p._)(d.Ms,d.$X,!0),Q=(0,p._)(d.Ms,d.Lb,!0),q=(0,p._)(d.Ms,d.Oh),X=(0,n.useCallback)((()=>{if(""===Y)return null;o(!0),u.A.invoke("GET","/api/v1/user/".concat((0,l.nf)(Y))).then((e=>{C(!1);const s=e.memberOf||[];O(s);const t=s.map((e=>({group:e})));K(t);const n=e.policy.map((e=>({policy:e})));n.sort(c.rY),D(n),w("enabled"===e.status),J(e.hasPolicy),o(!1)})).catch((s=>{C(!1),o(!1),e((0,m.Dy)(s))}))}),[Y,e]);(0,n.useEffect)((()=>{e((0,m.ph)("user_details_groups"))}),[]),(0,n.useEffect)((()=>{X()}),[X]);const ee=[{type:"view",onClick:e=>{t("".concat(d.zZ.GROUPS,"/").concat((0,l.nf)(e.group)))},disableButtonFunction:()=>!q}];return(0,f.jsxs)(n.Fragment,{children:[x&&(0,f.jsx)(E,{open:x,selectedUser:Y,closeModalAndRefresh:()=>{h(!1),X()}}),b&&(0,f.jsx)(I,{open:b,selectedUser:Y,currentPolicies:R,closeModalAndRefresh:()=>{S(!1),X()}}),N&&(0,f.jsx)(F.default,{deleteOpen:N,selectedUsers:[Y],closeDeleteModalAndRefresh:e=>{(e=>{T(!1),e&&X()})(e)}}),k&&(0,f.jsx)(L,{open:k,userName:Y,closeModal:()=>P(!1)}),(0,f.jsx)(g.A,{label:(0,f.jsx)(n.Fragment,{children:(0,f.jsx)(i.EGL,{label:"Users",onClick:()=>t(d.zZ.USERS)})}),actions:(0,f.jsx)(A.A,{})}),(0,f.jsx)(i.Mxu,{children:(0,f.jsxs)(i.xA9,{container:!0,children:[(0,f.jsx)(i.xA9,{item:!0,xs:12,children:(0,f.jsx)(i.lcx,{icon:(0,f.jsx)(i.c2u,{width:40}),title:Y,subTitle:"",actions:(0,f.jsxs)(n.Fragment,{children:[(0,f.jsx)("span",{style:{fontSize:".8rem",marginRight:".5rem"},children:"User Status:"}),(0,f.jsx)("span",{style:{fontWeight:"bold",fontSize:".9rem",marginRight:".5rem"},children:_?"Enabled":"Disabled"}),(0,f.jsx)(y.A,{tooltip:$||H?"":(0,p._)(d.Ms,d.Ho)?(0,d.vj)(d.m0,"disable users"):(0,p._)(d.Ms,d.m0)?(0,d.vj)(d.Ho,"enable users"):(0,d.vj)(d.ni,"enable or disable users"),children:(0,f.jsx)(i.dOG,{indicatorLabels:["Enabled","Disabled"],checked:_,value:"group_enabled",id:"group-status",name:"group-status",onChange:()=>{var s;w(!_),s=!_,v||(C(!0),u.A.invoke("PUT","/api/v1/user/".concat((0,l.nf)(Y)),{status:s?"enabled":"disabled",groups:U}).then((e=>{C(!1)})).catch((s=>{C(!1),e((0,m.Dy)(s))})))},switchOnly:!0,disabled:!$&&!H})}),(0,f.jsx)(y.A,{tooltip:(0,p._)(d.Ms,d.Dg)?Z===Y?"You cannot delete the currently logged in User":"Delete User":(0,d.vj)(d.Dg,"delete user"),children:(0,f.jsx)(i.$nd,{id:"delete-user",onClick:()=>{T(!0)},icon:(0,f.jsx)(i.ucK,{}),variant:"secondary",disabled:!(0,p._)(d.Ms,d.Dg)||Z===Y})}),(0,f.jsx)(y.A,{tooltip:"Change Password",children:(0,f.jsx)(i.$nd,{id:"change-user-password",onClick:()=>{P(!0)},icon:(0,f.jsx)(i.aJN,{}),variant:"regular",disabled:Z===Y})})]}),sx:{marginBottom:15}})}),(0,f.jsx)(i.xA9,{item:!0,xs:12,children:(0,f.jsx)(i.tUM,{currentTabOrPath:B,onTabClick:V,options:[{tabConfig:{id:"groups",label:"Groups",disabled:!Q},content:(0,f.jsxs)(n.Fragment,{children:[(0,f.jsx)(i.azJ,{onMouseMove:()=>e((0,m.ph)("user_details_groups")),children:(0,f.jsx)(i._xt,{separator:!0,sx:{marginBottom:15},actions:(0,f.jsx)(y.A,{tooltip:Q?"Assign groups":(0,d.vj)(d.Lb,"add users to groups"),children:(0,f.jsx)(i.$nd,{id:"add-groups",label:"Add to Groups",onClick:()=>{h(!0)},icon:(0,f.jsx)(i.REV,{}),variant:"callAction",disabled:!Q})}),children:"Groups"})}),(0,f.jsx)(i.xA9,{item:!0,xs:12,onMouseMove:()=>e((0,m.ph)("user_details_groups")),children:(0,f.jsx)(i.bQt,{itemActions:ee,columns:[{label:"Name",elementKey:"group"}],isLoading:r,records:M,entityName:"Groups",idField:"group"})})]})},{tabConfig:{id:"service_accounts",label:"Service Accounts",disabled:!(0,p._)(d.Ms,d.xw)},content:(0,f.jsx)(z,{user:Y,hasPolicy:G})},{tabConfig:{id:"policies",label:"Policies",disabled:!W},content:(0,f.jsxs)(n.Fragment,{children:[(0,f.jsx)(i.azJ,{onMouseMove:()=>e((0,m.ph)("user_details_policies")),children:(0,f.jsx)(i._xt,{separator:!0,sx:{marginBottom:15},actions:(0,f.jsx)(y.A,{tooltip:W?"Assign Policies":(0,d.vj)(d.$X,"assign policies"),children:(0,f.jsx)(i.$nd,{id:"assign-policies",label:"Assign Policies",onClick:()=>{S(!0)},icon:(0,f.jsx)(i.n$X,{}),variant:"callAction",disabled:!W})}),children:"Policies"})}),(0,f.jsx)(i.azJ,{children:(0,f.jsx)(i.bQt,{itemActions:[{type:"view",onClick:e=>{t("".concat(d.zZ.POLICIES,"/").concat((0,l.nf)(e.policy)))}}],columns:[{label:"Name",elementKey:"policy"}],isLoading:r,records:R,entityName:"Policies",idField:"policy"})})]})}]})})]})})]})};var J=t(88115);const B=e=>{let{icon:s,description:t}=e;return(0,f.jsxs)(i.azJ,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[s," ",(0,f.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})},V=()=>(0,f.jsxs)(i.azJ,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:0},children:[(0,f.jsxs)(i.azJ,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,f.jsx)(i.nag,{}),(0,f.jsx)("div",{children:"Learn more about the Users feature"})]}),(0,f.jsxs)(i.azJ,{sx:{fontSize:"14px",marginBottom:"15px"},children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,f.jsx)("br",{}),(0,f.jsx)("br",{}),"Each user can have one or more assigned policies that explicitly list the actions and resources to which that user has access. Users can also inherit policies from the groups in which they have membership.",(0,f.jsx)("br",{})]}),(0,f.jsxs)(i.azJ,{sx:{display:"flex",flexFlow:"column"},children:[(0,f.jsx)(B,{icon:(0,f.jsx)(i.c2u,{}),description:"Create Users"}),(0,f.jsx)(B,{icon:(0,f.jsx)(i.YXz,{}),description:"Manage Groups"}),(0,f.jsx)(B,{icon:(0,f.jsx)(i.uYH,{}),description:"Assign Policies"})]})]}),$=()=>{const e=(0,j.jL)(),s=(0,w.d4)((e=>e.createUser.userName));return(0,f.jsx)(i.cl_,{id:"accesskey-input",name:"accesskey-input",label:"User Name",value:s,autoFocus:!0,onChange:s=>{e((0,U.ht)(s.target.value))}})},H=()=>{const e=(0,j.jL)(),s=(0,w.d4)((e=>e.createUser.secretKey));return(0,f.jsx)(i.cl_,{id:"standard-multiline-static",name:"standard-multiline-static",type:"password",label:"Password",value:s,onChange:s=>{e((0,U.ir)(s.target.value))},autoComplete:"current-password"})},Y=()=>{const e=(0,j.jL)(),s=(0,w.d4)((e=>e.createUser.selectedPolicies)),t=(0,w.d4)((e=>e.createUser.selectedGroups)),r=(0,w.d4)((e=>e.createUser.addLoading)),c=(0,w.d4)((e=>e.createUser.sendEnabled)),l=(0,w.d4)((e=>e.createUser.secretKeylength)),u=(0,a.Zp)();e((0,U.yt)());return(0,n.useEffect)((()=>{e((0,m.ph)("add_user"))}),[]),(0,f.jsx)(n.Fragment,{children:(0,f.jsxs)(i.xA9,{item:!0,xs:12,children:[(0,f.jsx)(g.A,{label:(0,f.jsx)(i.EGL,{label:"Users",onClick:()=>u(d.zZ.USERS)}),actions:(0,f.jsx)(A.A,{})}),(0,f.jsx)(i.Mxu,{children:(0,f.jsx)(i.Hbc,{title:"Create User",icon:(0,f.jsx)(i.R$W,{}),helpBox:(0,f.jsx)(V,{}),children:(0,f.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{(s=>{if(s.preventDefault(),l<8)return e((0,m.C9)({errorMessage:"Passwords must be at least 8 characters long",detailedError:""})),void e((0,U.AE)(!1));r||(e((0,U.AE)(!0)),e((0,J.y)()).unwrap().then((()=>u("".concat(d.zZ.USERS)))))})(s)},children:[(0,f.jsx)($,{}),(0,f.jsx)(H,{}),(0,f.jsx)(O.A,{selectedPolicy:s}),(0,f.jsx)(C.A,{selectedGroups:t,setSelectedGroups:s=>{e((0,U.yD)(s))}}),r&&(0,f.jsx)(i.xA9,{item:!0,xs:12,children:(0,f.jsx)(i.z21,{})}),(0,f.jsxs)(i.xA9,{item:!0,xs:12,sx:o.Uz.modalButtonBar,children:[(0,f.jsx)(i.$nd,{id:"clear-add-user",type:"button",variant:"regular",onClick:s=>{e((0,J.o)())},label:"Clear"}),(0,f.jsx)(i.$nd,{id:"save-user",type:"submit",variant:"callAction",color:"primary",disabled:r||!c,label:"Save"})]})]})})})]})})};var Z=t(41206);const W=e=>{let{icon:s,description:t}=e;return(0,f.jsxs)(i.azJ,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[s," ",(0,f.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})},Q=()=>(0,f.jsxs)(i.azJ,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:0},children:[(0,f.jsxs)(i.azJ,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,f.jsx)(i.nag,{}),(0,f.jsx)("div",{children:"Learn more about Access Keys"})]}),(0,f.jsxs)(i.azJ,{sx:{fontSize:"14px",marginBottom:"15px"},children:[(0,f.jsxs)(i.azJ,{sx:{paddingBottom:"20px"},children:[(0,f.jsx)(W,{icon:(0,f.jsx)(i.ehx,{}),description:"Create Access Keys"}),(0,f.jsx)(i.azJ,{sx:{paddingTop:"20px"},children:"Access Keys inherit the policies explicitly attached to the parent user, and the policies attached to each group in which the parent user has membership."})]}),(0,f.jsxs)(i.azJ,{sx:{paddingBottom:"20px"},children:[(0,f.jsx)(W,{icon:(0,f.jsx)(i.aJN,{}),description:"Assign Custom Credentials"}),(0,f.jsx)(i.azJ,{sx:{paddingTop:"10px"},children:"Randomized access credentials are recommended, and provided by default. You may use your own custom Access Key and Secret Key by replacing the default values. After creation of any Access Key, you will be given the opportunity to view and download the account credentials."}),(0,f.jsx)(i.azJ,{sx:{paddingTop:"10px"},children:"Access Keys support programmatic access by applications. You cannot use a Access Key to log into the MinIO Console."})]}),(0,f.jsxs)(i.azJ,{sx:{paddingBottom:"20px"},children:[(0,f.jsx)(W,{icon:(0,f.jsx)(i.n$X,{}),description:"Assign Access Policies"}),(0,f.jsx)(i.azJ,{sx:{paddingTop:"10px"},children:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),(0,f.jsx)(i.azJ,{sx:{paddingTop:"10px"},children:"You cannot modify the optional Access Key IAM policy after saving."})]})]}),(0,f.jsx)(i.azJ,{sx:{display:"flex",flexFlow:"column"}})]});var q=t(11441);const X=()=>{const e=(0,j.jL)(),s=(0,a.g)(),t=(0,a.Zp)(),[r,c]=(0,n.useState)(!1),[x,h]=(0,n.useState)((0,l.$f)(20)),[p,y]=(0,n.useState)((0,l.$f)(40)),[b,S]=(0,n.useState)(!1),[v,C]=(0,n.useState)(null),[_,E]=(0,n.useState)(""),w=(0,l.x6)(s.userName||""),[U,O]=(0,n.useState)(""),[I,M]=(0,n.useState)(""),[R,D]=(0,n.useState)(""),[k,P]=(0,n.useState)();(0,n.useEffect)((()=>{if(r){const s=k?k.toJSDate().toISOString():null;u.A.invoke("POST","/api/v1/user/".concat((0,l.nf)(w),"/service-account-credentials"),{policy:_,accessKey:x,secretKey:p,description:I,comment:R,name:U,expiry:s}).then((e=>{c(!1),C({accessKey:e.accessKey||"",secretKey:e.secretKey||"",url:e.url||""})})).catch((s=>{c(!1),e((0,m.C9)(s))}))}}),[r,c,e,_,w,x,p,U,I,k,R]),(0,n.useEffect)((()=>{b&&u.A.invoke("GET","/api/v1/user/".concat((0,l.nf)(w),"/policies")).then((e=>{E(JSON.stringify(JSON.parse(e.policy),null,4))})).catch((e=>{(0,m.C9)(e)}))}),[b,w]);return(0,n.useEffect)((()=>{e((0,m.ph)("add_user_SA"))}),[]),(0,f.jsxs)(n.Fragment,{children:[v&&(0,f.jsx)(K.A,{newServiceAccount:v,open:!0,closeModal:()=>{C(null),t("".concat(d.zZ.USERS,"/").concat((0,l.nf)(w)))},entity:"Access Key"}),(0,f.jsxs)(i.xA9,{item:!0,xs:12,children:[(0,f.jsx)(g.A,{label:(0,f.jsx)(i.EGL,{onClick:()=>t("".concat(d.zZ.USERS,"/").concat((0,l.nf)(w))),label:"User Details - "+w}),actions:(0,f.jsx)(A.A,{})}),(0,f.jsx)(i.Mxu,{children:(0,f.jsx)(i.Hbc,{helpBox:(0,f.jsx)(Q,{}),icon:(0,f.jsx)(i.kQt,{}),title:"Create Access Key for ".concat(w),children:(0,f.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{e.preventDefault(),(e=>{e.preventDefault(),c(!0)})(e)},children:[(0,f.jsx)(i.cl_,{value:x,label:"Access Key",id:"accessKey",name:"accessKey",placeholder:"Enter Access Key",onChange:e=>{h(e.target.value)},startIcon:(0,f.jsx)(i.ehx,{})}),(0,f.jsx)(i.cl_,{value:p,label:"Secret Key",id:"secretKey",name:"secretKey",type:"password",placeholder:"Enter Secret Key",onChange:e=>{y(e.target.value)},startIcon:(0,f.jsx)(i.aJN,{})}),(0,f.jsx)(i.dOG,{value:"serviceAccountPolicy",id:"serviceAccountPolicy",name:"serviceAccountPolicy",checked:b,onChange:e=>{S(e.target.checked)},label:"Restrict beyond user policy",description:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),b&&(0,f.jsxs)(i.xA9,{item:!0,xs:12,children:[(0,f.jsx)(i.azJ,{children:(0,f.jsx)(i.V7x,{content:(0,f.jsx)(n.Fragment,{children:(0,f.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})}),placement:"right",children:(0,f.jsx)(q.A,{children:"Current User Policy - edit the JSON to remove permissions for this Access Key"})})}),(0,f.jsx)(i.xA9,{item:!0,xs:12,sx:{...o.Uz.formScrollable},children:(0,f.jsx)(Z.A,{value:_,onChange:e=>{E(e)},editorHeight:"350px",helptip:(0,f.jsx)(n.Fragment,{children:(0,f.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})})})})]}),(0,f.jsx)(i.azJ,{sx:{marginBottom:"15px",marginTop:"15px",width:"100%","& label":{width:"180px"}},children:(0,f.jsx)(i.e8j,{noLabelMinWidth:!0,value:k,onChange:e=>{P(e)},id:"expiryTime",label:"Expiry",timeFormat:"24h",secondsSelector:!1})}),(0,f.jsx)(i.cl_,{value:U,label:"Name",id:"name",name:"name",type:"text",placeholder:"Enter a name",onChange:e=>{O(e.target.value)}}),(0,f.jsx)(i.cl_,{value:I,label:"Description",id:"description",name:"description",type:"text",placeholder:"Enter a description",onChange:e=>{M(e.target.value)}}),(0,f.jsx)(i.cl_,{value:R,label:"Comments",id:"comment",name:"comment",type:"text",placeholder:"Enter a comment",onChange:e=>{D(e.target.value)}}),(0,f.jsxs)(i.xA9,{item:!0,xs:12,sx:{...o.Uz.modalButtonBar},children:[(0,f.jsx)(i.$nd,{id:"clear",type:"button",variant:"regular",onClick:()=>{C(null),h(""),y("")},label:"Clear"}),(0,f.jsx)(i.$nd,{id:"create-sa",type:"submit",variant:"callAction",color:"primary",label:"Create"})]})]})})})]})]})},ee=()=>(0,f.jsxs)(a.BV,{children:[(0,f.jsx)(a.qh,{path:"add-user",element:(0,f.jsx)(Y,{})}),(0,f.jsx)(a.qh,{path:":userName",element:(0,f.jsx)(G,{})}),(0,f.jsx)(a.qh,{path:"new-user-sa/:userName",element:(0,f.jsx)(X,{})}),(0,f.jsx)(a.qh,{path:"/",element:(0,f.jsx)(v,{})}),(0,f.jsx)(a.qh,{element:(0,f.jsx)(r.A,{})})]})}}]); -//# sourceMappingURL=3527.30ec1659.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/3527.30ec1659.chunk.js.map b/web-app/build/static/js/3527.30ec1659.chunk.js.map deleted file mode 100644 index 86e046dac..000000000 --- a/web-app/build/static/js/3527.30ec1659.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/3527.30ec1659.chunk.js","mappings":"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","sources":["screens/Console/Account/DeleteServiceAccount.tsx","screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.tsx","screens/Console/Common/PanelTitle/PanelTitle.tsx","screens/Console/Policies/PolicySelectors.tsx","screens/Console/Users/DeleteUser.tsx","screens/Console/Users/GroupsSelectors.tsx","screens/Console/Users/ListUsers.tsx","screens/Console/Users/ChangeUserGroups.tsx","screens/Console/Users/SetUserPolicies.tsx","screens/Console/Users/UserServiceAccountsPanel.tsx","screens/Console/Account/ChangeUserPasswordModal.tsx","screens/Console/Users/UserDetails.tsx","screens/Console/Users/AddUserHelpBox.tsx","screens/Console/Users/UserSelector.tsx","screens/Console/Users/PasswordSelector.tsx","screens/Console/Users/AddUserScreen.tsx","screens/Console/Users/AddUserServiceAccountHelpBox.tsx","screens/Console/Users/AddUserServiceAccountScreen.tsx","screens/Console/Users/Users.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteServiceAccountProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedServiceAccount: string | null;\n}\n\nconst DeleteServiceAccount = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedServiceAccount,\n}: IDeleteServiceAccountProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedServiceAccount) {\n return null;\n }\n\n const onConfirmDelete = () => {\n setLoadingDelete(true);\n api.serviceAccounts\n .deleteServiceAccount(encodeURLString(selectedServiceAccount))\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n };\n\n return (\n }\n isLoading={loadingDelete}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete Access Key{\" \"}\n \n {selectedServiceAccount}\n \n ?\n \n }\n />\n );\n};\n\nexport default DeleteServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, CopyIcon, InputLabel, ReadBox, Box } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface ICredentialsItem {\n label?: string;\n value?: string;\n}\n\nconst CredentialItem = ({ label = \"\", value = \"\" }: ICredentialsItem) => {\n const dispatch = useAppDispatch();\n\n return (\n \n {label}\n \n {\n dispatch(setModalSnackMessage(`${label} copied to clipboard`));\n }}\n style={{\n marginRight: \"5px\",\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n >\n {value}\n \n \n );\n};\n\nexport default CredentialItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport {\n Box,\n Button,\n DownloadIcon,\n ServiceAccountCredentialsIcon,\n WarnIcon,\n Grid,\n} from \"mds\";\nimport { NewServiceAccount } from \"./types\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport CredentialItem from \"./CredentialItem\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\nimport { modalStyleUtils } from \"../FormComponents/common/styleLibrary\";\n\nconst WarningBlock = styled.div(({ theme }) => ({\n color: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n}));\n\ninterface ICredentialsPromptProps {\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + text);\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n const downloadImport = () => {\n let consoleExtras = {};\n\n if (consoleCreds) {\n if (!Array.isArray(consoleCreds)) {\n consoleExtras = {\n url: consoleCreds.url,\n accessKey: consoleCreds.accessKey,\n secretKey: consoleCreds.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n } else {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n url: itemMap.url,\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n });\n consoleExtras = cCreds[0];\n }\n } else {\n consoleExtras = {\n url: newServiceAccount.url,\n accessKey: newServiceAccount.accessKey,\n secretKey: newServiceAccount.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n }\n\n download(\n \"credentials.json\",\n JSON.stringify({\n ...consoleExtras,\n }),\n );\n };\n\n const downloaddAllCredentials = () => {\n let allCredentials = {};\n if (\n consoleCreds &&\n Array.isArray(consoleCreds) &&\n consoleCreds.length > 1\n ) {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n };\n });\n allCredentials = cCreds;\n }\n download(\n \"all_credentials.json\",\n JSON.stringify({\n ...allCredentials,\n }),\n );\n };\n\n return (\n {\n closeModal();\n }}\n title={`New ${entity} Created`}\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n \n Console Credentials\n \n {Array.isArray(consoleCreds) &&\n consoleCreds.map((credentialsPair, index) => {\n return (\n \n \n \n \n );\n })}\n {!Array.isArray(consoleCreds) && (\n \n \n \n \n )}\n \n \n )}\n {(consoleCreds === null || consoleCreds === undefined) && (\n <>\n \n \n \n )}\n {idp ? (\n \n Please Login via the configured external identity provider.\n \n ) : (\n \n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n \n )}\n \n \n {!idp && (\n \n \n }\n variant=\"callAction\"\n />\n \n\n {Array.isArray(consoleCreds) && consoleCreds.length > 1 && (\n \n }\n variant=\"callAction\"\n color=\"primary\"\n />\n \n )}\n \n )}\n \n \n \n );\n};\n\nexport default CredentialsPrompt;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nconst PanelTitleContainer = styled.h1(() => ({\n padding: 0,\n margin: 0,\n fontSize: \".9rem\",\n}));\n\ninterface IPanelTitle {\n children: React.ReactNode;\n}\n\nconst PanelTitle = ({ children }: IPanelTitle) => {\n return {children};\n};\n\nexport default PanelTitle;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { ConfirmDeleteIcon, DataTable, InformativeMessage, Loader } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { UserServiceAccountItem } from \"../../../api/consoleApi\";\nimport { errorToHandler } from \"../../../api/errors\";\n\ninterface IDeleteUserProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedUsers: string[] | null;\n}\n\nconst DeleteUser = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedUsers,\n}: IDeleteUserProps) => {\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\n\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [loadingSA, setLoadingSA] = useState(true);\n const [hasSA, setHasSA] = useState(false);\n const [userSAList, setUserSAList] = useState([]);\n const [deleteLoading, setDeleteLoading] = useState(false);\n\n const userLoggedIn = localStorage.getItem(\"userLoggedIn\") || \"\";\n\n useEffect(() => {\n if (selectedUsers) {\n api.users\n .checkUserServiceAccounts(selectedUsers)\n .then((res) => {\n if (res.data) {\n setUserSAList(res.data.userServiceAccountList ?? []);\n if (res.data.hasSA) {\n setHasSA(true);\n }\n }\n })\n .catch((err) =>\n dispatch(setErrorSnackMessage(errorToHandler(err.error))),\n )\n .finally(() => setLoadingSA(false));\n }\n }, [selectedUsers, dispatch]);\n\n if (!selectedUsers) {\n return null;\n }\n const renderUsers = selectedUsers.map((user) => (\n

\n {user}\n
\n ));\n const viewAction = (selectionElement: any): void => {\n navigate(\n `${IAM_PAGES.USERS}/${encodeURLString(selectionElement.userName)}`,\n );\n onClose();\n };\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n },\n ];\n\n const onConfirmDelete = () => {\n for (let user of selectedUsers) {\n if (user === userLoggedIn) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Cannot delete currently logged in user\",\n detailedError: `Cannot delete currently logged in user ${userLoggedIn}`,\n }),\n );\n closeDeleteModalAndRefresh(true);\n } else {\n api.user\n .removeUser(encodeURLString(user))\n .then((res) => {\n closeDeleteModalAndRefresh(true);\n navigate(`${IAM_PAGES.USERS}`);\n })\n .finally(() => setDeleteLoading(false));\n }\n }\n };\n\n const noSAtext =\n \"Are you sure you want to delete the following \" +\n selectedUsers.length +\n \" \" +\n \"user\" +\n (selectedUsers.length > 1 ? \"s?\" : \"?\");\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n loadingSA ? (\n \n ) : (\n \n {hasSA ? (\n \n \n Click on a user to view the full listing of associated\n Access Keys. All Access Keys associated with a user will\n be deleted along with the user.\n
\n
\n Are you sure you want to continue?\n
\n }\n title=\"Warning: One or more users selected has associated Access Keys.\"\n sx={{ margin: \"15px 0\" }}\n />\n \n
\n ) : (\n \n {noSAtext}\n {renderUsers}\n \n )}\n \n )\n }\n />\n );\n};\n\nexport default DeleteUser;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { stringSort } from \"../../../utils/sortFunctions\";\nimport { GroupsList } from \"../Groups/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport api from \"../../../common/api\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedGroups: string[];\n setSelectedGroups: any;\n}\n\nconst GroupsSelectors = ({\n selectedGroups,\n setSelectedGroups,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchGroups = useCallback(() => {\n api\n .invoke(\"GET\", `/api/v1/groups`)\n .then((res: GroupsList) => {\n let groups = get(res, \"groups\", []);\n\n if (!groups) {\n groups = [];\n }\n setRecords(groups.sort(stringSort));\n isLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchGroups();\n }\n }, [loading, fetchGroups]);\n\n const selGroups = !selectedGroups ? [] : selectedGroups;\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selGroups]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedGroups(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.includes(filter),\n );\n\n return (\n \n {loading && }\n {records !== null && records.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Groups Available\n \n )}\n \n );\n};\n\nexport default GroupsSelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n AddIcon,\n Button,\n DeleteIcon,\n GroupsIcon,\n HelpBox,\n PageLayout,\n UsersIcon,\n DataTable,\n Grid,\n ProgressBar,\n ActionLink,\n} from \"mds\";\n\nimport { User, UsersList } from \"./types\";\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport {\n addUserToGroupPermissions,\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n IAM_PAGES,\n IAM_SCOPES,\n listUsersPermissions,\n permissionTooltipHelper,\n S3_ALL_RESOURCES,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport api from \"../../../common/api\";\nimport SearchBox from \"../Common/SearchBox\";\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst DeleteUser = withSuspense(React.lazy(() => import(\"./DeleteUser\")));\nconst AddToGroup = withSuspense(React.lazy(() => import(\"./BulkAddToGroup\")));\n\nconst ListUsers = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [addGroupOpen, setAddGroupOpen] = useState(false);\n const [filter, setFilter] = useState(\"\");\n const [checkedUsers, setCheckedUsers] = useState([]);\n\n const displayListUsers = hasPermission(\n CONSOLE_UI_RESOURCE,\n listUsersPermissions,\n );\n\n const viewUser = hasPermission(CONSOLE_UI_RESOURCE, viewUserPermissions);\n\n const addUserToGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n addUserToGroupPermissions,\n );\n\n const deleteUser = hasPermission(CONSOLE_UI_RESOURCE, deleteUserPermissions);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n setLoading(true);\n setCheckedUsers([]);\n }\n };\n\n const closeAddGroupBulk = (unCheckAll: boolean = false) => {\n setAddGroupOpen(false);\n if (unCheckAll) {\n setCheckedUsers([]);\n }\n };\n\n useEffect(() => {\n if (loading) {\n if (displayListUsers) {\n api\n .invoke(\"GET\", `/api/v1/users`)\n .then((res: UsersList) => {\n const users = res.users === null ? [] : res.users;\n\n setLoading(false);\n setRecords(users.sort(usersSort));\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, dispatch, displayListUsers]);\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const { target: { value = \"\", checked = false } = {} } = e;\n\n let elements: string[] = [...checkedUsers]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n\n setCheckedUsers(elements);\n\n return elements;\n };\n\n const viewAction = (selectionElement: any): void => {\n navigate(\n `${IAM_PAGES.USERS}/${encodeURLString(selectionElement.accessKey)}`,\n );\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !viewUser,\n },\n {\n type: \"edit\",\n onClick: viewAction,\n disableButtonFunction: () => !viewUser,\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"list_users\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {addGroupOpen && (\n {\n closeAddGroupBulk(close);\n }}\n />\n )}\n } />\n\n \n \n \n \n \n \n {\n setDeleteOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n disabled={checkedUsers.length === 0}\n variant={\"secondary\"}\n aria-label=\"delete-selected-users\"\n />\n \n \n \n \n }\n disabled={checkedUsers.length <= 0}\n onClick={() => {\n if (checkedUsers.length > 0) {\n setAddGroupOpen(true);\n }\n }}\n variant={\"regular\"}\n />\n \n \n \n \n }\n onClick={() => {\n navigate(`${IAM_PAGES.USER_ADD}`);\n }}\n variant={\"callAction\"}\n disabled={\n !hasPermission(\n \"console-ui\",\n [\n IAM_SCOPES.ADMIN_CREATE_USER,\n IAM_SCOPES.ADMIN_LIST_USER_POLICIES,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n IAM_SCOPES.ADMIN_ATTACH_USER_OR_GROUP_POLICY,\n ],\n true,\n )\n }\n />\n \n \n \n\n {loading && }\n {!loading && (\n \n {records.length > 0 && (\n \n \n \n \n \n \n }\n help={\n \n A MinIO user consists of a unique access key (username)\n and corresponding secret key (password). Clients must\n authenticate their identity by specifying both a valid\n access key (username) and the corresponding secret key\n (password) of an existing MinIO user.\n
\n Groups provide a simplified method for managing shared\n permissions among users with common access patterns and\n workloads.\n
\n
\n Users inherit access permissions to data and resources\n through the groups they belong to.\n
\n MinIO uses Policy-Based Access Control (PBAC) to define\n the authorized actions and resources to which an\n authenticated user has access. Each policy describes one\n or more actions and conditions that outline the\n permissions of a user or group of users.\n
\n
\n Each user can access only those resources and operations\n which are explicitly granted by the built-in role. MinIO\n denies access to any other resource or action by\n default.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n
\n )}\n {records.length === 0 && (\n \n \n }\n help={\n \n A MinIO user consists of a unique access key\n (username) and corresponding secret key (password).\n Clients must authenticate their identity by specifying\n both a valid access key (username) and the\n corresponding secret key (password) of an existing\n MinIO user.\n
\n Groups provide a simplified method for managing shared\n permissions among users with common access patterns\n and workloads.\n
\n
\n Users inherit access permissions to data and resources\n through the groups they belong to.\n
\n MinIO uses Policy-Based Access Control (PBAC) to\n define the authorized actions and resources to which\n an authenticated user has access. Each policy\n describes one or more actions and conditions that\n outline the permissions of a user or group of users.\n
\n
\n Each user can access only those resources and\n operations which are explicitly granted by the\n built-in role. MinIO denies access to any other\n resource or action by default.\n \n
\n
\n To get started,{\" \"}\n {\n navigate(`${IAM_PAGES.USER_ADD}`);\n }}\n >\n Create a User\n \n .\n \n
\n }\n />\n
\n
\n )}\n
\n )}\n
\n
\n
\n );\n};\n\nexport default ListUsers;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\n\nimport {\n AddMembersToGroupIcon,\n Button,\n FormLayout,\n Grid,\n Box,\n ProgressBar,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport api from \"../../../common/api\";\nimport GroupsSelectors from \"./GroupsSelectors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface IChangeUserGroupsContentProps {\n closeModalAndRefresh: () => void;\n selectedUser: string;\n open: boolean;\n}\n\nconst ChangeUserGroups = ({\n closeModalAndRefresh,\n selectedUser,\n open,\n}: IChangeUserGroupsContentProps) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n const [enabled, setEnabled] = useState(false);\n const [selectedGroups, setSelectedGroups] = useState([]);\n\n const getUserInformation = useCallback(() => {\n if (!selectedUser) {\n return null;\n }\n\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(selectedUser)}`)\n .then((res) => {\n setAddLoading(false);\n setAccessKey(res.accessKey);\n setSelectedGroups(res.memberOf || []);\n setEnabled(res.status === \"enabled\");\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [selectedUser, dispatch]);\n\n useEffect(() => {\n if (selectedUser === null) {\n setAccessKey(\"\");\n setSecretKey(\"\");\n setSelectedGroups([]);\n } else {\n getUserInformation();\n }\n }, [selectedUser, getUserInformation]);\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n if (selectedUser !== null) {\n api\n .invoke(\"PUT\", `/api/v1/user/${encodeURLString(selectedUser)}`, {\n status: enabled ? \"enabled\" : \"disabled\",\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n } else {\n api\n .invoke(\"POST\", \"/api/v1/users\", {\n accessKey,\n secretKey,\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }\n };\n\n const resetForm = () => {\n if (selectedUser !== null) {\n setSelectedGroups([]);\n return;\n }\n setAccessKey(\"\");\n setSecretKey(\"\");\n setSelectedGroups([]);\n };\n\n const sendEnabled =\n accessKey.trim() !== \"\" &&\n ((secretKey.trim() !== \"\" && selectedUser === null) ||\n selectedUser !== null);\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title={\"Set Groups\"}\n titleIcon={}\n >\n \n ) => {\n saveRecord(e);\n }}\n >\n \n {\n setSelectedGroups(elements);\n }}\n />\n \n \n \n\n \n \n {addLoading && (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default ChangeUserGroups;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport {\n Box,\n Button,\n FormLayout,\n IAMPoliciesIcon,\n ProgressBar,\n Grid,\n} from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { IPolicyItem } from \"../Users/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"./AddUsersSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../common/api\";\nimport PolicySelectors from \"../Policies/PolicySelectors\";\n\ninterface ISetUserPoliciesProps {\n closeModalAndRefresh: () => void;\n selectedUser: string;\n currentPolicies: IPolicyItem[];\n open: boolean;\n}\n\nconst SetUserPolicies = ({\n closeModalAndRefresh,\n selectedUser,\n currentPolicies,\n open,\n}: ISetUserPoliciesProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [loading, setLoading] = useState(false);\n const [actualPolicy, setActualPolicy] = useState([]);\n\n const statePolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const SetUserPoliciesAction = () => {\n let entity = \"user\";\n let value = selectedUser;\n\n setLoading(true);\n\n api\n .invoke(\"PUT\", `/api/v1/set-policy`, {\n name: statePolicies,\n entityName: value,\n entityType: entity,\n })\n .then(() => {\n setLoading(false);\n dispatch(setSelectedPolicies([]));\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const resetSelection = () => {\n dispatch(setSelectedPolicies(actualPolicy));\n };\n\n useEffect(() => {\n if (open) {\n const userPolicy: string[] = currentPolicies.map((pol) => {\n return pol.policy;\n });\n setActualPolicy(userPolicy);\n dispatch(setSelectedPolicies(userPolicy));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, selectedUser]);\n\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title=\"Set Policies\"\n titleIcon={}\n >\n \n \n \n \n \n \n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default SetUserPolicies;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AddIcon, Box, Button, DataTable, DeleteIcon, SectionTitle } from \"mds\";\nimport api from \"../../../common/api\";\nimport { NewServiceAccount } from \"../Common/CredentialsPrompt/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport DeleteServiceAccount from \"../Account/DeleteServiceAccount\";\nimport CredentialsPrompt from \"../Common/CredentialsPrompt/CredentialsPrompt\";\n\nimport DeleteMultipleServiceAccounts from \"./DeleteMultipleServiceAccounts\";\nimport { selectSAs } from \"../Configurations/utils\";\nimport EditServiceAccount from \"../Account/EditServiceAccount\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { ServiceAccounts } from \"../../../api/consoleApi\";\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { ACCOUNT_TABLE_COLUMNS } from \"../Account/AccountUtils\";\n\ninterface IUserServiceAccountsProps {\n user: string;\n hasPolicy: boolean;\n}\n\nconst UserServiceAccountsPanel = ({\n user,\n hasPolicy,\n}: IUserServiceAccountsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedServiceAccount, setSelectedServiceAccount] = useState<\n string | null\n >(null);\n const [showNewCredentials, setShowNewCredentials] = useState(false);\n const [newServiceAccount, setNewServiceAccount] =\n useState(null);\n const [selectedSAs, setSelectedSAs] = useState([]);\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [editOpen, setEditOpen] = useState(false);\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(user)}/service-accounts`)\n .then((res: ServiceAccounts) => {\n setLoading(false);\n const sortedRows = res.sort(usersSort);\n setRecords(sortedRows);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, setLoading, setRecords, user, dispatch]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n if (refresh) {\n dispatch(setSnackBarMessage(`Access Keys deleted successfully.`));\n setSelectedSAs([]);\n setLoading(true);\n }\n };\n\n const closeCredentialsModal = () => {\n setShowNewCredentials(false);\n setNewServiceAccount(null);\n };\n\n const editModalOpen = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setEditOpen(true);\n };\n\n const confirmDeleteServiceAccount = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setDeleteOpen(true);\n };\n\n const closePolicyModal = () => {\n setEditOpen(false);\n setLoading(true);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: (value: any) => {\n if (value) {\n editModalOpen(value.accessKey);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (value: any) => {\n if (value) {\n confirmDeleteServiceAccount(value.accessKey);\n }\n },\n },\n {\n type: \"edit\",\n onClick: (value: any) => {\n if (value) {\n editModalOpen(value.accessKey);\n }\n },\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"user_details_accounts\"));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {deleteMultipleOpen && (\n \n )}\n {showNewCredentials && (\n {\n closeCredentialsModal();\n }}\n entity=\"Access Key\"\n />\n )}\n {editOpen && (\n \n )}\n\n \n \n {\n setDeleteMultipleOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n disabled={selectedSAs.length === 0}\n variant={\"secondary\"}\n />\n \n \n \n }\n onClick={() => {\n navigate(\n `/identity/users/new-user-sa/${encodeURLString(user)}`,\n );\n }}\n disabled={!hasPolicy}\n />\n \n \n \n }\n >\n Access Keys\n \n\n selectSAs(e, setSelectedSAs, selectedSAs)}\n selectedItems={selectedSAs}\n isLoading={loading}\n records={records}\n idField=\"accessKey\"\n />\n \n );\n};\n\nexport default UserServiceAccountsPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport {\n Box,\n Button,\n ChangePasswordIcon,\n FormLayout,\n InputBox,\n ProgressBar,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, ChangeUserPasswordRequest } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface IChangeUserPasswordProps {\n open: boolean;\n userName: string;\n closeModal: () => void;\n}\n\nconst ChangeUserPassword = ({\n open,\n userName,\n closeModal,\n}: IChangeUserPasswordProps) => {\n const dispatch = useAppDispatch();\n const [newPassword, setNewPassword] = useState(\"\");\n const [reNewPassword, setReNewPassword] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const changeUserPassword = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (loading) {\n return;\n }\n setLoading(true);\n\n if (newPassword.length < 8) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"Passwords must be at least 8 characters long\",\n detailedError: \"\",\n }),\n );\n setLoading(false);\n return;\n }\n\n let request: ChangeUserPasswordRequest = {\n selectedUser: userName,\n newSecretKey: newPassword,\n };\n\n api.account\n .changeUserPassword(request)\n .then((res) => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n dispatch(\n setSnackBarMessage(\n `Successfully updated the password for the user ${userName}.`,\n ),\n );\n closeModal();\n })\n .catch(async (res) => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return open ? (\n {\n setNewPassword(\"\");\n setReNewPassword(\"\");\n closeModal();\n }}\n titleIcon={}\n >\n ) => {\n changeUserPassword(e);\n }}\n >\n \n \n Change password for: {userName}\n \n ) => {\n setNewPassword(event.target.value);\n }}\n label=\"New Password\"\n type=\"password\"\n value={newPassword}\n />\n ) => {\n setReNewPassword(event.target.value);\n }}\n label=\"Type New Password Again\"\n type=\"password\"\n value={reNewPassword}\n />\n \n 0 && newPassword === reNewPassword)\n }\n label={\"Save\"}\n />\n \n {loading && (\n \n \n \n )}\n \n \n \n ) : null;\n};\n\nexport default ChangeUserPassword;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n IAMPoliciesIcon,\n PageLayout,\n PasswordKeyIcon,\n ScreenTitle,\n SectionTitle,\n Switch,\n Tabs,\n TrashIcon,\n UsersIcon,\n} from \"mds\";\nimport { IPolicyItem } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { decodeURLString, encodeURLString } from \"../../../common/utils\";\nimport { setHelpName, setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport {\n assignGroupPermissions,\n assignIAMPolicyPermissions,\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n disableUserPermissions,\n editServiceAccountPermissions,\n enableDisableUserPermissions,\n enableUserPermissions,\n getGroupPermissions,\n IAM_PAGES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport { useAppDispatch } from \"../../../store\";\nimport { policyDetailsSort } from \"../../../utils/sortFunctions\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport api from \"../../../common/api\";\nimport ChangeUserGroups from \"./ChangeUserGroups\";\nimport SetUserPolicies from \"./SetUserPolicies\";\nimport UserServiceAccountsPanel from \"./UserServiceAccountsPanel\";\nimport ChangeUserPasswordModal from \"../Account/ChangeUserPasswordModal\";\nimport DeleteUser from \"./DeleteUser\";\n\ninterface IGroupItem {\n group: string;\n}\n\nconst UserDetails = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [loading, setLoading] = useState(false);\n const [addGroupOpen, setAddGroupOpen] = useState(false);\n const [policyOpen, setPolicyOpen] = useState(false);\n const [addLoading, setAddLoading] = useState(false);\n const [enabled, setEnabled] = useState(false);\n const [selectedGroups, setSelectedGroups] = useState([]);\n const [currentGroups, setCurrentGroups] = useState([]);\n const [currentPolicies, setCurrentPolicies] = useState([]);\n const [changeUserPasswordModalOpen, setChangeUserPasswordModalOpen] =\n useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [hasPolicy, setHasPolicy] = useState(false);\n const [selectedTab, setSelectedTab] = useState(\"groups\");\n\n const enableEnabled =\n hasPermission(CONSOLE_UI_RESOURCE, enableUserPermissions) && !enabled;\n const disableEnabled =\n hasPermission(CONSOLE_UI_RESOURCE, disableUserPermissions) && enabled;\n\n const userName = decodeURLString(params.userName || \"\");\n\n const changeUserPassword = () => {\n setChangeUserPasswordModalOpen(true);\n };\n\n const deleteUser = () => {\n setDeleteOpen(true);\n };\n\n const userLoggedIn = localStorage.getItem(\"userLoggedIn\") || \"\";\n const canAssignPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n assignIAMPolicyPermissions,\n true,\n );\n const canAssignGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n assignGroupPermissions,\n true,\n );\n\n const viewGroup = hasPermission(CONSOLE_UI_RESOURCE, getGroupPermissions);\n\n const getUserInformation = useCallback(() => {\n if (userName === \"\") {\n return null;\n }\n setLoading(true);\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(userName)}`)\n .then((res) => {\n setAddLoading(false);\n const memberOf = res.memberOf || [];\n setSelectedGroups(memberOf);\n\n const currentGroups: IGroupItem[] = memberOf.map((group: string) => {\n return {\n group: group,\n };\n });\n\n setCurrentGroups(currentGroups);\n const currentPolicies: IPolicyItem[] = res.policy.map(\n (policy: string) => {\n return {\n policy: policy,\n };\n },\n );\n\n currentPolicies.sort(policyDetailsSort);\n\n setCurrentPolicies(currentPolicies);\n setEnabled(res.status === \"enabled\");\n setHasPolicy(res.hasPolicy);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [userName, dispatch]);\n\n const saveRecord = (isEnabled: boolean) => {\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api\n .invoke(\"PUT\", `/api/v1/user/${encodeURLString(userName)}`, {\n status: isEnabled ? \"enabled\" : \"disabled\",\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"user_details_groups\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n getUserInformation();\n }, [getUserInformation]);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n getUserInformation();\n }\n };\n\n const groupViewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURLString(group.group)}`);\n };\n\n const groupTableActions = [\n {\n type: \"view\",\n onClick: groupViewAction,\n disableButtonFunction: () => !viewGroup,\n },\n ];\n\n return (\n \n {addGroupOpen && (\n {\n setAddGroupOpen(false);\n getUserInformation();\n }}\n />\n )}\n {policyOpen && (\n {\n setPolicyOpen(false);\n getUserInformation();\n }}\n />\n )}\n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {changeUserPasswordModalOpen && (\n setChangeUserPasswordModalOpen(false)}\n />\n )}\n \n navigate(IAM_PAGES.USERS)}\n />\n \n }\n actions={}\n />\n \n \n \n }\n title={userName}\n subTitle={\"\"}\n actions={\n \n \n User Status:\n \n \n {enabled ? \"Enabled\" : \"Disabled\"}\n \n \n {\n setEnabled(!enabled);\n saveRecord(!enabled);\n }}\n switchOnly\n disabled={!enableEnabled && !disableEnabled}\n />\n \n \n }\n variant={\"secondary\"}\n disabled={\n !hasPermission(\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n ) || userLoggedIn === userName\n }\n />\n \n\n \n }\n variant={\"regular\"}\n disabled={userLoggedIn === userName}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n\n \n \n \n dispatch(setHelpName(\"user_details_groups\"))\n }\n >\n \n {\n setAddGroupOpen(true);\n }}\n icon={}\n variant={\"callAction\"}\n disabled={!canAssignGroup}\n />\n \n }\n >\n Groups\n \n \n \n dispatch(setHelpName(\"user_details_groups\"))\n }\n >\n \n \n \n ),\n },\n {\n tabConfig: {\n id: \"service_accounts\",\n label: \"Service Accounts\",\n disabled: !hasPermission(\n CONSOLE_UI_RESOURCE,\n editServiceAccountPermissions,\n ),\n },\n content: (\n \n ),\n },\n {\n tabConfig: {\n id: \"policies\",\n label: \"Policies\",\n disabled: !canAssignPolicy,\n },\n content: (\n \n \n dispatch(setHelpName(\"user_details_policies\"))\n }\n >\n \n {\n setPolicyOpen(true);\n }}\n icon={}\n variant={\"callAction\"}\n disabled={!canAssignPolicy}\n />\n \n }\n >\n Policies\n \n \n \n {\n navigate(\n `${IAM_PAGES.POLICIES}/${encodeURLString(\n policy.policy,\n )}`,\n );\n },\n },\n ]}\n columns={[{ label: \"Name\", elementKey: \"policy\" }]}\n isLoading={loading}\n records={currentPolicies}\n entityName=\"Policies\"\n idField=\"policy\"\n />\n \n \n ),\n },\n ]}\n />\n \n \n \n \n );\n};\n\nexport default UserDetails;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\n\nimport {\n Box,\n ChangeAccessPolicyIcon,\n GroupsIcon,\n HelpIconFilled,\n UsersIcon,\n} from \"mds\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\nconst AddUserHelpBox = () => {\n return (\n \n \n \n
Learn more about the Users feature
\n \n \n A MinIO user consists of a unique access key (username) and\n corresponding secret key (password). Clients must authenticate their\n identity by specifying both a valid access key (username) and the\n corresponding secret key (password) of an existing MinIO user.\n
\n
\n Each user can have one or more assigned policies that explicitly list\n the actions and resources to which that user has access. Users can also\n inherit policies from the groups in which they have membership.\n
\n
\n\n \n } description={`Create Users`} />\n } description={`Manage Groups`} />\n }\n description={`Assign Policies`}\n />\n \n \n );\n};\n\nexport default AddUserHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { setUserName } from \"./AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { InputBox } from \"mds\";\n\nconst UserSelector = () => {\n const dispatch = useAppDispatch();\n const userName = useSelector((state: AppState) => state.createUser.userName);\n return (\n ) => {\n dispatch(setUserName(e.target.value));\n }}\n />\n );\n};\nexport default UserSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { InputBox } from \"mds\";\nimport { setSecretKey } from \"./AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\n\nconst PasswordSelector = () => {\n const dispatch = useAppDispatch();\n const secretKey = useSelector(\n (state: AppState) => state.createUser.secretKey,\n );\n\n return (\n ) => {\n dispatch(setSecretKey(e.target.value));\n }}\n autoComplete=\"current-password\"\n />\n );\n};\nexport default PasswordSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport {\n BackLink,\n Button,\n CreateUserIcon,\n FormLayout,\n Grid,\n PageLayout,\n ProgressBar,\n} from \"mds\";\nimport { createUserAsync, resetFormAsync } from \"./thunk/AddUsersThunk\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { useNavigate } from \"react-router-dom\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\nimport {\n setAddLoading,\n setSelectedGroups,\n setSendEnabled,\n} from \"./AddUsersSlice\";\nimport AddUserHelpBox from \"./AddUserHelpBox\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PolicySelectors from \"../Policies/PolicySelectors\";\nimport UserSelector from \"./UserSelector\";\nimport PasswordSelector from \"./PasswordSelector\";\nimport GroupsSelectors from \"./GroupsSelectors\";\n\nconst AddUser = () => {\n const dispatch = useAppDispatch();\n const selectedPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n const selectedGroups = useSelector(\n (state: AppState) => state.createUser.selectedGroups,\n );\n const addLoading = useSelector(\n (state: AppState) => state.createUser.addLoading,\n );\n const sendEnabled = useSelector(\n (state: AppState) => state.createUser.sendEnabled,\n );\n const secretKeylength = useSelector(\n (state: AppState) => state.createUser.secretKeylength,\n );\n const navigate = useNavigate();\n dispatch(setSendEnabled());\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (secretKeylength < 8) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Passwords must be at least 8 characters long\",\n detailedError: \"\",\n }),\n );\n dispatch(setAddLoading(false));\n return;\n }\n if (addLoading) {\n return;\n }\n dispatch(setAddLoading(true));\n dispatch(createUserAsync())\n .unwrap() // <-- async Thunk returns a promise, that can be 'unwrapped')\n .then(() => navigate(`${IAM_PAGES.USERS}`));\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"add_user\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.USERS)}\n />\n }\n actions={}\n />\n \n }\n helpBox={}\n >\n ) => {\n saveRecord(e);\n }}\n >\n \n \n \n {\n dispatch(setSelectedGroups(elements));\n }}\n />\n {addLoading && (\n \n \n \n )}\n\n \n {\n dispatch(resetFormAsync());\n }}\n label={\"Clear\"}\n />\n\n \n \n \n \n \n \n \n );\n};\n\nexport default AddUser;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport {\n Box,\n HelpIconFilled,\n IAMPoliciesIcon,\n PasswordKeyIcon,\n ServiceAccountIcon,\n} from \"mds\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\nconst AddUserServiceAccountHelpBox = () => {\n return (\n \n \n \n
Learn more about Access Keys
\n \n \n \n }\n description={`Create Access Keys`}\n />\n \n Access Keys inherit the policies explicitly attached to the parent\n user, and the policies attached to each group in which the parent\n user has membership.\n \n \n \n }\n description={`Assign Custom Credentials`}\n />\n \n Randomized access credentials are recommended, and provided by\n default. You may use your own custom Access Key and Secret Key by\n replacing the default values. After creation of any Access Key, you\n will be given the opportunity to view and download the account\n credentials.\n \n \n Access Keys support programmatic access by applications. You cannot\n use a Access Key to log into the MinIO Console.\n \n \n \n }\n description={`Assign Access Policies`}\n />\n \n You can specify an optional JSON-formatted IAM policy to further\n restrict Access Key access to a subset of the actions and resources\n explicitly allowed for the parent user. Additional access beyond\n that of the parent user cannot be implemented through these\n policies.\n \n \n You cannot modify the optional Access Key IAM policy after saving.\n \n \n \n \n \n );\n};\n\nexport default AddUserServiceAccountHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n Button,\n FormLayout,\n Grid,\n InputBox,\n PageLayout,\n PasswordKeyIcon,\n ServiceAccountCredentialsIcon,\n ServiceAccountIcon,\n Switch,\n HelpTip,\n DateTimeInput,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { NewServiceAccount } from \"../Common/CredentialsPrompt/types\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport {\n decodeURLString,\n encodeURLString,\n getRandomString,\n} from \"../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport api from \"../../../../src/common/api\";\nimport CredentialsPrompt from \"../Common/CredentialsPrompt/CredentialsPrompt\";\nimport AddUserServiceAccountHelpBox from \"./AddUserServiceAccountHelpBox\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PanelTitle from \"../Common/PanelTitle/PanelTitle\";\n\nconst AddServiceAccount = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [addSending, setAddSending] = useState(false);\n const [accessKey, setAccessKey] = useState(getRandomString(20));\n const [secretKey, setSecretKey] = useState(getRandomString(40));\n const [isRestrictedByPolicy, setIsRestrictedByPolicy] =\n useState(false);\n const [newServiceAccount, setNewServiceAccount] =\n useState(null);\n const [policyJSON, setPolicyJSON] = useState(\"\");\n\n const userName = decodeURLString(params.userName || \"\");\n\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [comments, setComments] = useState(\"\");\n const [expiry, setExpiry] = useState();\n\n useEffect(() => {\n if (addSending) {\n const expiryDt = expiry ? expiry.toJSDate().toISOString() : null;\n api\n .invoke(\n \"POST\",\n `/api/v1/user/${encodeURLString(\n userName,\n )}/service-account-credentials`,\n {\n policy: policyJSON,\n accessKey: accessKey,\n secretKey: secretKey,\n description: description,\n comment: comments,\n name: name,\n expiry: expiryDt,\n },\n )\n .then((res) => {\n setAddSending(false);\n setNewServiceAccount({\n accessKey: res.accessKey || \"\",\n secretKey: res.secretKey || \"\",\n url: res.url || \"\",\n });\n })\n .catch((err: ErrorResponseHandler) => {\n setAddSending(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [\n addSending,\n setAddSending,\n dispatch,\n policyJSON,\n userName,\n accessKey,\n secretKey,\n name,\n description,\n expiry,\n comments,\n ]);\n\n useEffect(() => {\n if (isRestrictedByPolicy) {\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(userName)}/policies`)\n\n .then((res) => {\n setPolicyJSON(JSON.stringify(JSON.parse(res.policy), null, 4));\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n });\n }\n }, [isRestrictedByPolicy, userName]);\n\n const addUserServiceAccount = (e: React.FormEvent) => {\n e.preventDefault();\n setAddSending(true);\n };\n\n const resetForm = () => {\n setNewServiceAccount(null);\n setAccessKey(\"\");\n setSecretKey(\"\");\n };\n\n const closeCredentialsModal = () => {\n setNewServiceAccount(null);\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(userName)}`);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"add_user_SA\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {newServiceAccount && (\n {\n closeCredentialsModal();\n }}\n entity=\"Access Key\"\n />\n )}\n \n \n navigate(`${IAM_PAGES.USERS}/${encodeURLString(userName)}`)\n }\n label={\"User Details - \" + userName}\n />\n }\n actions={}\n />\n \n }\n icon={}\n title={`Create Access Key for ${userName}`}\n >\n ) => {\n e.preventDefault();\n addUserServiceAccount(e);\n }}\n >\n {\n setAccessKey(e.target.value);\n }}\n startIcon={}\n />\n {\n setSecretKey(e.target.value);\n }}\n startIcon={}\n />\n\n ) => {\n setIsRestrictedByPolicy(event.target.checked);\n }}\n label={\"Restrict beyond user policy\"}\n description={\n \"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies.\"\n }\n />\n {isRestrictedByPolicy && (\n \n \n \n \n Guide to access policy structure\n \n \n }\n placement=\"right\"\n >\n \n Current User Policy - edit the JSON to remove\n permissions for this Access Key\n \n \n \n \n {\n setPolicyJSON(value);\n }}\n editorHeight={\"350px\"}\n helptip={\n \n \n Guide to access policy structure\n \n \n }\n />\n \n \n )}\n\n \n {\n setExpiry(e);\n }}\n id=\"expiryTime\"\n label={\"Expiry\"}\n timeFormat={\"24h\"}\n secondsSelector={false}\n />\n \n\n {\n setName(e.target.value);\n }}\n />\n {\n setDescription(e.target.value);\n }}\n />\n {\n setComments(e.target.value);\n }}\n />\n \n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default AddServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Route, Routes } from \"react-router-dom\";\nimport NotFoundPage from \"../../NotFoundPage\";\nimport ListUsers from \"./ListUsers\";\nimport UserDetails from \"./UserDetails\";\nimport AddUserScreen from \"./AddUserScreen\";\nimport AddUserServiceAccountScreen from \"./AddUserServiceAccountScreen\";\n\nconst Users = () => {\n return (\n \n } />\n } />\n }\n />\n } />\n } />\n \n );\n};\n\nexport default Users;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedServiceAccount","dispatch","useAppDispatch","loadingDelete","setLoadingDelete","useState","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","api","serviceAccounts","deleteServiceAccount","encodeURLString","then","_","catch","async","err","res","json","setErrorSnackMessage","errorToHandler","finally","onClose","confirmationContent","_jsxs","Fragment","children","style","maxWidth","whiteSpace","wordWrap","label","value","Box","sx","marginTop","InputLabel","ReadBox","actionButton","CopyToClipboard","text","Button","id","variant","onClick","setModalSnackMessage","concat","marginRight","width","height","padding","icon","CopyIcon","WarningBlock","styled","div","theme","color","get","fontSize","margin","display","alignItems","download","filename","element","document","createElement","setAttribute","body","appendChild","click","removeChild","_ref2","newServiceAccount","open","closeModal","entity","consoleCreds","idp","ModalWrapper","modalOpen","ServiceAccountCredentialsIcon","Grid","container","item","xs","overflowY","maxHeight","fontWeight","Array","isArray","map","credentialsPair","index","CredentialItem","accessKey","secretKey","undefined","_Fragment","WarnIcon","modalStyleUtils","modalButtonBar","TooltipWrapper","tooltip","downloadImport","consoleExtras","itemMap","url","path","JSON","stringify","DownloadIcon","length","downloaddAllCredentials","allCredentials","PanelTitleContainer","h1","noTitle","records","setRecords","loading","filter","setFilter","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","useCallback","policies","listPolicies","_res$data$policies","data","sort","policySort","setModalErrorSnackMessage","useEffect","filteredRecords","elementItem","name","includes","className","ProgressBar","SearchBox","placeholder","onChange","DataTable","columns","elementKey","onSelect","e","targetD","target","checked","elements","push","setSelectedPolicies","selectedItems","entityName","idField","customPaperHeight","textAlign","selectedUsers","navigate","useNavigate","loadingSA","setLoadingSA","hasSA","setHasSA","userSAList","setUserSAList","deleteLoading","setDeleteLoading","userLoggedIn","localStorage","getItem","users","checkUserServiceAccounts","_res$data$userService","userServiceAccountList","error","renderUsers","user","tableActions","type","selectionElement","IAM_PAGES","USERS","userName","noSAtext","errorMessage","detailedError","removeUser","Loader","InformativeMessage","message","itemActions","selectedGroups","setSelectedGroups","fetchGroups","invoke","groups","stringSort","selGroups","DeleteUser","withSuspense","React","AddToGroup","ListUsers","setLoading","setDeleteOpen","addGroupOpen","setAddGroupOpen","checkedUsers","setCheckedUsers","displayListUsers","hasPermission","CONSOLE_UI_RESOURCE","listUsersPermissions","viewUser","viewUserPermissions","addUserToGroup","addUserToGroupPermissions","deleteUser","deleteUserPermissions","usersSort","viewAction","disableButtonFunction","setHelpName","refresh","closeModalAndRefresh","close","unCheckAll","arguments","closeAddGroupBulk","PageHeaderWrapper","actions","HelpMenu","PageLayout","actionsTray","SecureComponent","resource","scopes","IAM_SCOPES","ADMIN_DELETE_USER","matchAll","errorProps","disabled","permissionTooltipHelper","DeleteIcon","ADMIN_ADD_USER_TO_GROUP","GroupsIcon","ADMIN_CREATE_USER","ADMIN_LIST_USER_POLICIES","ADMIN_LIST_GROUPS","S3_ALL_RESOURCES","ADMIN_ATTACH_USER_OR_GROUP_POLICY","AddIcon","USER_ADD","marginBottom","ADMIN_LIST_USERS","HelpBox","iconComponent","UsersIcon","help","href","rel","ActionLink","selectedUser","addLoading","setAddLoading","setAccessKey","setSecretKey","enabled","setEnabled","getUserInformation","memberOf","status","sendEnabled","trim","AddMembersToGroupIcon","noValidate","autoComplete","onSubmit","preventDefault","FormLayout","withBorders","containerPadding","GroupsSelectors","resetForm","actualPolicy","setActualPolicy","statePolicies","userPolicy","pol","policy","IAMPoliciesIcon","PolicySelectors","selectedPolicy","resetSelection","SetUserPoliciesAction","entityType","hasPolicy","setSelectedServiceAccount","showNewCredentials","setShowNewCredentials","setNewServiceAccount","selectedSAs","setSelectedSAs","deleteMultipleOpen","setDeleteMultipleOpen","editOpen","setEditOpen","fetchRecords","sortedRows","editModalOpen","confirmDeleteServiceAccount","DeleteServiceAccount","DeleteMultipleServiceAccounts","setSnackBarMessage","CredentialsPrompt","EditServiceAccount","selectedAccessKey","closePolicyModal","SectionTitle","separator","justifyContent","gap","ADMIN_CREATE_SERVICEACCOUNT","ADMIN_UPDATE_SERVICEACCOUNT","ADMIN_REMOVE_SERVICEACCOUNT","ADMIN_LIST_SERVICEACCOUNTS","ACCOUNT_TABLE_COLUMNS","selectSAs","newPassword","setNewPassword","reNewPassword","setReNewPassword","ChangePasswordIcon","event","request","newSecretKey","account","changeUserPassword","InputBox","UserDetails","params","useParams","policyOpen","setPolicyOpen","currentGroups","setCurrentGroups","setCurrentPolicies","changeUserPasswordModalOpen","setChangeUserPasswordModalOpen","setHasPolicy","selectedTab","setSelectedTab","enableEnabled","enableUserPermissions","disableEnabled","disableUserPermissions","decodeURLString","canAssignPolicy","assignIAMPolicyPermissions","canAssignGroup","assignGroupPermissions","viewGroup","getGroupPermissions","group","policyDetailsSort","groupTableActions","GROUPS","ChangeUserGroups","SetUserPolicies","ChangeUserPasswordModal","BackLink","ScreenTitle","subTitle","enableDisableUserPermissions","Switch","indicatorLabels","isEnabled","switchOnly","TrashIcon","PasswordKeyIcon","Tabs","currentTabOrPath","onTabClick","options","tabConfig","content","onMouseMove","editServiceAccountPermissions","UserServiceAccountsPanel","POLICIES","FeatureItem","description","fontStyle","AddUserHelpBox","flex","border","borderRadius","flexFlow","HelpIconFilled","ChangeAccessPolicyIcon","UserSelector","autoFocus","setUserName","PasswordSelector","AddUser","secretKeylength","setSendEnabled","CreateUserIcon","helpBox","createUserAsync","unwrap","saveRecord","resetFormAsync","AddUserServiceAccountHelpBox","paddingBottom","ServiceAccountIcon","paddingTop","AddServiceAccount","addSending","setAddSending","getRandomString","isRestrictedByPolicy","setIsRestrictedByPolicy","policyJSON","setPolicyJSON","setName","setDescription","comments","setComments","expiry","setExpiry","expiryDt","toJSDate","toISOString","comment","parse","addUserServiceAccount","startIcon","HelpTip","placement","PanelTitle","formScrollable","CodeMirrorWrapper","editorHeight","helptip","DateTimeInput","noLabelMinWidth","timeFormat","secondsSelector","Users","Routes","Route","AddUserScreen","AddUserServiceAccountScreen","NotFoundPage"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/3527.b7757ae8.chunk.js b/web-app/build/static/js/3527.b7757ae8.chunk.js new file mode 100644 index 000000000..83a907ed4 --- /dev/null +++ b/web-app/build/static/js/3527.b7757ae8.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[3527,8823],{18823:(e,s,t)=>{t.r(s),t.d(s,{default:()=>u});var n=t(65043),a=t(58661),r=t(89923),o=t(64159),c=t(20554),i=t(56629),l=t(53518),d=t(70579);const u=e=>{let{closeDeleteModalAndRefresh:s,deleteOpen:t,selectedServiceAccount:u}=e;const x=(0,c.jL)(),[h,p]=(0,n.useState)(!1);if(!u)return null;return(0,d.jsx)(a.A,{title:"Delete Access Key",confirmText:"Delete",isOpen:t,titleIcon:(0,d.jsx)(r.xWY,{}),isLoading:h,onConfirm:()=>{p(!0),i.F.serviceAccounts.deleteServiceAccount(u).then((e=>{s(!0)})).catch((async e=>{const t=await e.json();x((0,o.C9)((0,l.S)(t))),s(!1)})).finally((()=>p(!1)))},onClose:()=>s(!1),confirmationContent:(0,d.jsxs)(n.Fragment,{children:["Are you sure you want to delete Access Key"," ",(0,d.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:u}),"?"]})})}},78619:(e,s,t)=>{t.d(s,{A:()=>A});var n=t(65043),a=t(33097),r=t.n(a),o=t(94574),c=t(89923),i=t(94141),l=t(61476),d=t.n(l),u=t(64159),x=t(20554),h=t(70579);const p=e=>{let{label:s="",value:t=""}=e;const n=(0,x.jL)();return(0,h.jsxs)(c.azJ,{sx:{marginTop:12},children:[(0,h.jsx)(c.l1Y,{children:s}),(0,h.jsx)(c.EmB,{actionButton:(0,h.jsx)(d(),{text:t,children:(0,h.jsx)(c.$nd,{id:"copy-path",variant:"regular",onClick:()=>{n((0,u.h0)("".concat(s," copied to clipboard")))},style:{marginRight:"5px",width:"28px",height:"28px",padding:"0px"},icon:(0,h.jsx)(c.TdU,{})})}),children:t})]})};var m=t(6681),j=t(77403);const y=o.Ay.div((e=>{let{theme:s}=e;return{color:r()(s,"signalColors.danger","#C51B3F"),fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}}})),g=(e,s)=>{let t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+s),t.setAttribute("download",e),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)},A=e=>{let{newServiceAccount:s,open:t,closeModal:a,entity:o}=e;if(!s)return null;const l=r()(s,"console",null),d=r()(s,"idp",!1);return(0,h.jsx)(i.A,{modalOpen:t,onClose:()=>{a()},title:"New ".concat(o," Created"),titleIcon:(0,h.jsx)(c.kQt,{}),children:(0,h.jsxs)(c.xA9,{container:!0,children:[(0,h.jsxs)(c.xA9,{item:!0,xs:12,children:["A new ",o," has been created with the following details:",!d&&l&&(0,h.jsx)(n.Fragment,{children:(0,h.jsxs)(c.xA9,{item:!0,xs:12,sx:{overflowY:"auto",maxHeight:350},children:[(0,h.jsx)(c.azJ,{sx:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},children:"Console Credentials"}),Array.isArray(l)&&l.map(((e,s)=>(0,h.jsxs)(n.Fragment,{children:[(0,h.jsx)(p,{label:"Access Key",value:e.accessKey}),(0,h.jsx)(p,{label:"Secret Key",value:e.secretKey})]}))),!Array.isArray(l)&&(0,h.jsxs)(n.Fragment,{children:[(0,h.jsx)(p,{label:"Access Key",value:l.accessKey}),(0,h.jsx)(p,{label:"Secret Key",value:l.secretKey})]})]})}),(null===l||void 0===l)&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(p,{label:"Access Key",value:s.accessKey||""}),(0,h.jsx)(p,{label:"Secret Key",value:s.secretKey||""})]}),d?(0,h.jsx)(y,{children:"Please Login via the configured external identity provider."}):(0,h.jsxs)(y,{children:[(0,h.jsx)(c.cJw,{}),(0,h.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,h.jsx)(c.xA9,{item:!0,xs:12,sx:{...j.Uz.modalButtonBar},children:!d&&(0,h.jsxs)(n.Fragment,{children:[(0,h.jsx)(m.A,{tooltip:"Download credentials in a JSON file formatted for import using mc alias import. This will only include the default login credentials.",children:(0,h.jsx)(c.$nd,{id:"download-button",label:"Download for import",onClick:()=>{let e={};if(l)if(Array.isArray(l)){e=l.map((e=>({url:e.url,accessKey:e.accessKey,secretKey:e.secretKey,api:"s3v4",path:"auto"})))[0]}else e={url:l.url,accessKey:l.accessKey,secretKey:l.secretKey,api:"s3v4",path:"auto"};else e={url:s.url,accessKey:s.accessKey,secretKey:s.secretKey,api:"s3v4",path:"auto"};g("credentials.json",JSON.stringify({...e}))},icon:(0,h.jsx)(c.s3U,{}),variant:"callAction"})}),Array.isArray(l)&&l.length>1&&(0,h.jsx)(m.A,{tooltip:"Download all access credentials to a JSON file. NOTE: This file is not formatted for import using mc alias import. If you plan to import this alias from the file, please use the Download for Import button. ",children:(0,h.jsx)(c.$nd,{id:"download-all-button",label:"Download all access credentials",onClick:()=>{let e={};if(l&&Array.isArray(l)&&l.length>1){e=l.map((e=>({accessKey:e.accessKey,secretKey:e.secretKey})))}g("all_credentials.json",JSON.stringify({...e}))},icon:(0,h.jsx)(c.s3U,{}),variant:"callAction",color:"primary"})})]})})]})})}},11441:(e,s,t)=>{t.d(s,{A:()=>o});t(65043);var n=t(94574),a=t(70579);const r=n.Ay.h1((()=>({padding:0,margin:0,fontSize:".9rem"}))),o=e=>{let{children:s}=e;return(0,a.jsx)(r,{children:s})}},42967:(e,s,t)=>{t.d(s,{A:()=>h});var n=t(65043),a=t(89923),r=t(8185),o=t(64681),c=t(64159),i=t(20554),l=t(62560),d=t(22166),u=t(56629),x=t(70579);const h=e=>{let{noTitle:s=!1}=e;const t=(0,i.jL)(),[h,p]=(0,n.useState)([]),[m,j]=(0,n.useState)(!1),[y,g]=(0,n.useState)(""),A=(0,d.d4)((e=>e.createUser.selectedPolicies)),b=(0,n.useCallback)((()=>{j(!0),u.F.policies.listPolicies().then((e=>{var s;const t=null!==(s=e.data.policies)&&void 0!==s?s:[];j(!1),p(t.sort(r.Hw))})).catch((e=>{j(!1),t((0,c.Dy)(e))}))}),[t]);(0,n.useEffect)((()=>{j(!0)}),[]),(0,n.useEffect)((()=>{m&&b()}),[m,b]);const f=h.filter((e=>e.name.includes(y)));return(0,x.jsxs)(a.xA9,{item:!0,xs:12,className:"inputItem",children:[m&&(0,x.jsx)(a.z21,{}),h.length>0?(0,x.jsxs)(n.Fragment,{children:[(0,x.jsx)(a.xA9,{item:!0,xs:12,className:"inputItem",children:(0,x.jsx)(o.A,{placeholder:"Start typing to search for a Policy",onChange:e=>{g(e)},value:y,label:s?"":"Assign Policies"})}),(0,x.jsx)(a.bQt,{columns:[{label:"Policy",elementKey:"name"}],onSelect:e=>{const s=e.target,n=s.value,a=s.checked;let r=[...A];a?r.push(n):r=r.filter((e=>e!==n)),r=r.filter((e=>""!==e)),t((0,l.Gy)(r))},selectedItems:A,isLoading:m,records:f,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,x.jsx)(a.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},56071:(e,s,t)=>{t.r(s),t.d(s,{default:()=>h});var n=t(65043),a=t(73216),r=t(64159),o=t(89923),c=t(99161),i=t(58661),l=t(20554),d=t(56629),u=t(53518),x=t(70579);const h=e=>{let{closeDeleteModalAndRefresh:s,deleteOpen:t,selectedUsers:h}=e;const p=(0,a.Zp)(),m=(0,l.jL)(),j=()=>s(!1),[y,g]=(0,n.useState)(!0),[A,b]=(0,n.useState)(!1),[f,S]=(0,n.useState)([]),[v,C]=(0,n.useState)(!1),_=localStorage.getItem("userLoggedIn")||"";if((0,n.useEffect)((()=>{h&&d.F.users.checkUserServiceAccounts(h).then((e=>{var s;e.data&&(S(null!==(s=e.data.userServiceAccountList)&&void 0!==s?s:[]),e.data.hasSA&&b(!0))})).catch((e=>m((0,r.C9)((0,u.S)(e.error))))).finally((()=>g(!1)))}),[h,m]),!h)return null;const E=h.map((e=>(0,x.jsx)("div",{children:(0,x.jsx)("b",{children:e})},e))),U=[{type:"view",onClick:e=>{p("".concat(c.zZ.USERS,"/").concat(encodeURIComponent(e.userName))),j()}}],w="Are you sure you want to delete the following "+h.length+" user"+(h.length>1?"s?":"?");return(0,x.jsx)(i.A,{title:"Delete User".concat(h.length>1?"s":""),confirmText:"Delete",isOpen:t,titleIcon:(0,x.jsx)(o.xWY,{}),isLoading:v,onConfirm:()=>{for(let e of h)e===_?(m((0,r.C9)({errorMessage:"Cannot delete currently logged in user",detailedError:"Cannot delete currently logged in user ".concat(_)})),s(!0)):d.F.user.removeUser(e).then((e=>{s(!0),p("".concat(c.zZ.USERS))})).finally((()=>C(!1)))},onClose:j,confirmationContent:y?(0,x.jsx)(o.aHM,{}):(0,x.jsx)(n.Fragment,{children:A?(0,x.jsxs)(n.Fragment,{children:[(0,x.jsx)(o.Wei,{variant:"warning",message:(0,x.jsxs)(n.Fragment,{children:["Click on a user to view the full listing of associated Access Keys. All Access Keys associated with a user will be deleted along with the user.",(0,x.jsx)("br",{}),(0,x.jsx)("br",{}),(0,x.jsx)("strong",{children:"Are you sure you want to continue?"})]}),title:"Warning: One or more users selected has associated Access Keys.",sx:{margin:"15px 0"}}),(0,x.jsx)(o.bQt,{itemActions:U,columns:[{label:"Username",elementKey:"userName"},{label:"# Associated Access Keys",elementKey:"numSAs"}],isLoading:y,records:f,entityName:"User Access Keys",idField:"userName",customPaperHeight:"250"})]}):(0,x.jsxs)(n.Fragment,{children:[w,E]})})})}},13109:(e,s,t)=>{t.d(s,{A:()=>h});var n=t(65043),a=t(33097),r=t.n(a),o=t(89923),c=t(8185),i=t(64159),l=t(20554),d=t(20649),u=t(64681),x=t(70579);const h=e=>{let{selectedGroups:s,setSelectedGroups:t}=e;const a=(0,l.jL)(),[h,p]=(0,n.useState)([]),[m,j]=(0,n.useState)(!1),[y,g]=(0,n.useState)(""),A=(0,n.useCallback)((()=>{d.A.invoke("GET","/api/v1/groups").then((e=>{let s=r()(e,"groups",[]);s||(s=[]),p(s.sort(c.SO)),j(!1)})).catch((e=>{a((0,i.Dy)(e)),j(!1)}))}),[a]);(0,n.useEffect)((()=>{j(!0)}),[]),(0,n.useEffect)((()=>{m&&A()}),[m,A]);const b=s||[],f=h.filter((e=>e.includes(y)));return(0,x.jsxs)(o.xA9,{item:!0,xs:12,className:"inputItem",children:[m&&(0,x.jsx)(o.z21,{}),null!==h&&h.length>0?(0,x.jsxs)(n.Fragment,{children:[(0,x.jsx)(o.xA9,{item:!0,xs:12,className:"inputItem",children:(0,x.jsx)(u.A,{placeholder:"Start typing to search for Groups",onChange:g,value:y,label:"Assign Groups"})}),(0,x.jsx)(o.bQt,{columns:[{label:"Group"}],onSelect:e=>{const s=e.target,n=s.value,a=s.checked;let r=[...b];return a?r.push(n):r=r.filter((e=>e!==n)),t(r),r},selectedItems:b,isLoading:m,records:f,entityName:"Groups",idField:"",customPaperHeight:"200px"})]}):(0,x.jsx)(o.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Groups Available"})]})}},43527:(e,s,t)=>{t.r(s),t.d(s,{default:()=>ee});var n=t(65043),a=t(73216),r=t(39808),o=t(89923),c=t(8185),i=t(77403),l=t(99161),d=t(20649),u=t(64681),x=t(72237),h=t(77938),p=t(64159),m=t(20554),j=t(6681),y=t(48793),g=t(55968),A=t(70579);const b=(0,x.A)(n.lazy((()=>Promise.resolve().then(t.bind(t,56071))))),f=(0,x.A)(n.lazy((()=>t.e(24).then(t.bind(t,60024))))),S=()=>{const e=(0,m.jL)(),s=(0,a.Zp)(),[t,r]=(0,n.useState)([]),[x,S]=(0,n.useState)(!0),[v,C]=(0,n.useState)(!1),[_,E]=(0,n.useState)(!1),[U,w]=(0,n.useState)(""),[I,O]=(0,n.useState)([]),R=(0,h._)(l.Ms,l.x6),M=(0,h._)(l.Ms,l.Ld),K=(0,h._)(l.Ms,l.BD),D=(0,h._)(l.Ms,l.Dg);(0,n.useEffect)((()=>{x&&(R?d.A.invoke("GET","/api/v1/users").then((e=>{const s=null===e.users?[]:e.users;S(!1),r(s.sort(c.LA))})).catch((s=>{S(!1),e((0,p.C9)(s))})):S(!1))}),[x,e,R]);const k=t.filter((e=>e.accessKey.includes(U))),P=e=>{s("".concat(l.zZ.USERS,"/").concat(encodeURIComponent(e.accessKey)))},z=[{type:"view",onClick:P,disableButtonFunction:()=>!M},{type:"edit",onClick:P,disableButtonFunction:()=>!M}];return(0,n.useEffect)((()=>{e((0,p.ph)("list_users"))}),[]),(0,A.jsxs)(n.Fragment,{children:[v&&(0,A.jsx)(b,{deleteOpen:v,selectedUsers:I,closeDeleteModalAndRefresh:e=>{(e=>{C(!1),e&&(S(!0),O([]))})(e)}}),_&&(0,A.jsx)(f,{open:_,checkedUsers:I,closeModalAndRefresh:e=>{!function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];E(!1),e&&O([])}(e)}}),(0,A.jsx)(y.A,{label:"Users",actions:(0,A.jsx)(g.A,{})}),(0,A.jsx)(o.Mxu,{children:(0,A.jsxs)(o.xA9,{container:!0,children:[(0,A.jsxs)(o.xA9,{item:!0,xs:12,sx:i._0.actionsTray,children:[(0,A.jsx)(u.A,{placeholder:"Search Users",onChange:w,value:U,sx:{marginRight:"auto",maxWidth:380}}),(0,A.jsx)(h.R,{resource:l.Ms,scopes:[l.OV.ADMIN_DELETE_USER],matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(j.A,{tooltip:(0,h._)("console",[l.OV.ADMIN_DELETE_USER])?0===I.length?"Select Users to delete":"Delete Selected":(0,l.vj)([l.OV.ADMIN_DELETE_USER],"delete users"),children:(0,A.jsx)(o.$nd,{id:"delete-selected-users",onClick:()=>{C(!0)},label:"Delete Selected",icon:(0,A.jsx)(o.d7y,{}),disabled:0===I.length,variant:"secondary","aria-label":"delete-selected-users"})})}),(0,A.jsx)(h.R,{scopes:[l.OV.ADMIN_ADD_USER_TO_GROUP],resource:l.Ms,errorProps:{disabled:!0},children:(0,A.jsx)(j.A,{tooltip:(0,h._)("console",[l.OV.ADMIN_ADD_USER_TO_GROUP])?0===I.length?"Select Users to group":"Add to Group":(0,l.vj)([l.OV.ADMIN_ADD_USER_TO_GROUP],"add users to groups"),children:(0,A.jsx)(o.$nd,{id:"add-to-group",label:"Add to Group",icon:(0,A.jsx)(o.YXz,{}),disabled:I.length<=0,onClick:()=>{I.length>0&&E(!0)},variant:"regular"})})}),(0,A.jsx)(h.R,{scopes:[l.OV.ADMIN_CREATE_USER,l.OV.ADMIN_LIST_USER_POLICIES,l.OV.ADMIN_LIST_GROUPS],resource:l.HD,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(j.A,{tooltip:(0,h._)("console-ui",[l.OV.ADMIN_CREATE_USER,l.OV.ADMIN_LIST_USER_POLICIES,l.OV.ADMIN_LIST_GROUPS,l.OV.ADMIN_ATTACH_USER_OR_GROUP_POLICY],!0)?"Create User":(0,l.vj)([l.OV.ADMIN_CREATE_USER,l.OV.ADMIN_LIST_USER_POLICIES,l.OV.ADMIN_LIST_GROUPS,l.OV.ADMIN_ATTACH_USER_OR_GROUP_POLICY],"create users"),children:(0,A.jsx)(o.$nd,{id:"create-user",label:"Create User",icon:(0,A.jsx)(o.REV,{}),onClick:()=>{s("".concat(l.zZ.USER_ADD))},variant:"callAction",disabled:!(0,h._)("console-ui",[l.OV.ADMIN_CREATE_USER,l.OV.ADMIN_LIST_USER_POLICIES,l.OV.ADMIN_LIST_GROUPS,l.OV.ADMIN_ATTACH_USER_OR_GROUP_POLICY],!0)})})})]}),x&&(0,A.jsx)(o.z21,{}),!x&&(0,A.jsxs)(n.Fragment,{children:[t.length>0&&(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)(o.xA9,{item:!0,xs:12,sx:{marginBottom:15},children:(0,A.jsx)(h.R,{scopes:[l.OV.ADMIN_LIST_USERS],resource:l.Ms,errorProps:{disabled:!0},children:(0,A.jsx)(o.bQt,{itemActions:z,columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:K||D?e=>{const{target:{value:s="",checked:t=!1}={}}=e;let n=[...I];return t?n.push(s):n=n.filter((e=>e!==s)),O(n),n}:void 0,selectedItems:I,isLoading:x,records:k,entityName:"Users",idField:"accessKey"})})}),(0,A.jsx)(o.lVp,{title:"Users",iconComponent:(0,A.jsx)(o.c2u,{}),help:(0,A.jsxs)(n.Fragment,{children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,A.jsx)("br",{}),"Groups provide a simplified method for managing shared permissions among users with common access patterns and workloads.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Users inherit access permissions to data and resources through the groups they belong to.",(0,A.jsx)("br",{}),"MinIO uses Policy-Based Access Control (PBAC) to define the authorized actions and resources to which an authenticated user has access. Each policy describes one or more actions and conditions that outline the permissions of a user or group of users.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"You can learn more at our"," ",(0,A.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/minio-user-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})]}),0===t.length&&(0,A.jsx)(o.xA9,{container:!0,children:(0,A.jsx)(o.xA9,{item:!0,xs:8,children:(0,A.jsx)(o.lVp,{title:"Users",iconComponent:(0,A.jsx)(o.c2u,{}),help:(0,A.jsxs)(n.Fragment,{children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,A.jsx)("br",{}),"Groups provide a simplified method for managing shared permissions among users with common access patterns and workloads.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Users inherit access permissions to data and resources through the groups they belong to.",(0,A.jsx)("br",{}),"MinIO uses Policy-Based Access Control (PBAC) to define the authorized actions and resources to which an authenticated user has access. Each policy describes one or more actions and conditions that outline the permissions of a user or group of users.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default.",(0,A.jsxs)(h.R,{scopes:[l.OV.ADMIN_CREATE_USER,l.OV.ADMIN_LIST_USER_POLICIES,l.OV.ADMIN_LIST_GROUPS],matchAll:!0,resource:l.Ms,children:[(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"To get started,"," ",(0,A.jsx)(o.t53,{onClick:()=>{s("".concat(l.zZ.USER_ADD))},children:"Create a User"}),"."]})]})})})})]})]})})]})};var v=t(13109),C=t(94141);const _=e=>{let{closeModalAndRefresh:s,selectedUser:t,open:a}=e;const r=(0,m.jL)(),[c,l]=(0,n.useState)(!1),[u,x]=(0,n.useState)(""),[h,j]=(0,n.useState)(""),[y,g]=(0,n.useState)(!1),[b,f]=(0,n.useState)([]),S=(0,n.useCallback)((()=>{if(!t)return null;d.A.invoke("GET","/api/v1/user/".concat(encodeURIComponent(t))).then((e=>{l(!1),x(e.accessKey),f(e.memberOf||[]),g("enabled"===e.status)})).catch((e=>{l(!1),r((0,p.Dy)(e))}))}),[t,r]);(0,n.useEffect)((()=>{null===t?(x(""),j(""),f([])):S()}),[t,S]);const _=""!==u.trim()&&(""!==h.trim()&&null===t||null!==t);return(0,A.jsx)(C.A,{onClose:()=>{s()},modalOpen:a,title:"Set Groups",titleIcon:(0,A.jsx)(o.WC,{}),children:(0,A.jsx)(n.Fragment,{children:(0,A.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{e.preventDefault(),c||(l(!0),null!==t?d.A.invoke("PUT","/api/v1/user/".concat(encodeURIComponent(t)),{status:y?"enabled":"disabled",groups:b}).then((e=>{l(!1),s()})).catch((e=>{l(!1),r((0,p.Dy)(e))})):d.A.invoke("POST","/api/v1/users",{accessKey:u,secretKey:h,groups:b}).then((e=>{l(!1),s()})).catch((e=>{l(!1),r((0,p.Dy)(e))})))},children:[(0,A.jsx)(o.Hbc,{withBorders:!1,containerPadding:!1,children:(0,A.jsx)(v.A,{selectedGroups:b,setSelectedGroups:e=>{f(e)}})}),(0,A.jsxs)(o.azJ,{sx:i.Uz.modalButtonBar,children:[(0,A.jsx)(o.$nd,{id:"clear-change-user-groups",type:"button",variant:"regular",onClick:()=>{null===t?(x(""),j(""),f([])):f([])},label:"Clear"}),(0,A.jsx)(o.$nd,{id:"save-user-groups",type:"submit",variant:"callAction",disabled:c||!_,label:"Save"})]}),c&&(0,A.jsx)(o.xA9,{item:!0,xs:12,children:(0,A.jsx)(o.z21,{})})]})})})};var E=t(22166),U=t(62560),w=t(42967);const I=e=>{let{closeModalAndRefresh:s,selectedUser:t,currentPolicies:a,open:r}=e;const c=(0,m.jL)(),[l,u]=(0,n.useState)(!1),[x,h]=(0,n.useState)([]),j=(0,E.d4)((e=>e.createUser.selectedPolicies));return(0,n.useEffect)((()=>{if(r){const e=a.map((e=>e.policy));h(e),c((0,U.Gy)(e))}}),[r,t]),(0,A.jsxs)(C.A,{onClose:()=>{s()},modalOpen:r,title:"Set Policies",titleIcon:(0,A.jsx)(o.n$X,{}),children:[(0,A.jsx)(o.Hbc,{withBorders:!1,containerPadding:!1,children:(0,A.jsx)(w.A,{selectedPolicy:j})}),(0,A.jsxs)(o.azJ,{sx:i.Uz.modalButtonBar,children:[(0,A.jsx)(o.$nd,{id:"reset-user-policies",type:"button",variant:"regular",color:"primary",onClick:()=>{c((0,U.Gy)(x))},label:"Reset"}),(0,A.jsx)(o.$nd,{id:"save-user-policy",type:"button",variant:"callAction",color:"primary",disabled:l,onClick:()=>{let e=t;u(!0),d.A.invoke("PUT","/api/v1/set-policy",{name:j,entityName:e,entityType:"user"}).then((()=>{u(!1),c((0,U.Gy)([])),s()})).catch((e=>{u(!1),c((0,p.Dy)(e))}))},label:"Save"})]}),l&&(0,A.jsx)(o.xA9,{item:!0,xs:12,children:(0,A.jsx)(o.z21,{})})]})};var O=t(18823),R=t(78619),M=t(68045),K=t(45479),D=t(10158),k=t(99956);const P=e=>{let{user:s,hasPolicy:t}=e;const r=(0,m.jL)(),i=(0,a.Zp)(),[u,x]=(0,n.useState)([]),[y,g]=(0,n.useState)(!1),[b,f]=(0,n.useState)(!1),[S,v]=(0,n.useState)(null),[C,_]=(0,n.useState)(!1),[E,U]=(0,n.useState)(null),[w,I]=(0,n.useState)([]),[P,z]=(0,n.useState)(!1),[N,T]=(0,n.useState)(!1);(0,n.useEffect)((()=>{L()}),[]),(0,n.useEffect)((()=>{y&&d.A.invoke("GET","/api/v1/user/".concat(encodeURIComponent(s),"/service-accounts")).then((e=>{g(!1);const s=e.sort(c.LA);x(s)})).catch((e=>{r((0,p.C9)(e)),g(!1)}))}),[y,g,x,s,r]);const L=()=>{g(!0)},F=e=>{v(e),T(!0)},G=[{type:"view",onClick:e=>{e&&F(e.accessKey)}},{type:"delete",onClick:e=>{e&&(e=>{v(e),f(!0)})(e.accessKey)}},{type:"edit",onClick:e=>{e&&F(e.accessKey)}}];return(0,n.useEffect)((()=>{r((0,p.ph)("user_details_accounts"))}),[]),(0,A.jsxs)(n.Fragment,{children:[b&&(0,A.jsx)(O.default,{deleteOpen:b,selectedServiceAccount:S,closeDeleteModalAndRefresh:e=>{(e=>{f(!1),e&&L()})(e)}}),P&&(0,A.jsx)(M.A,{deleteOpen:P,selectedSAs:w,closeDeleteModalAndRefresh:e=>{z(!1),e&&(r((0,p.Hk)("Access Keys deleted successfully.")),I([]),g(!0))}}),C&&(0,A.jsx)(R.A,{newServiceAccount:E,open:C,closeModal:()=>{_(!1),U(null)},entity:"Access Key"}),N&&(0,A.jsx)(D.A,{open:N,selectedAccessKey:S,closeModalAndRefresh:()=>{T(!1),g(!0)}}),(0,A.jsx)(o._xt,{separator:!0,sx:{marginBottom:15},actions:(0,A.jsxs)(o.azJ,{sx:{display:"flex",justifyContent:"flex-end",gap:10},children:[(0,A.jsx)(j.A,{tooltip:"Delete Selected",children:(0,A.jsx)(o.$nd,{id:"delete-selected",onClick:()=>{z(!0)},label:"Delete Selected",icon:(0,A.jsx)(o.d7y,{}),disabled:0===w.length,variant:"secondary"})}),(0,A.jsx)(h.R,{scopes:[l.OV.ADMIN_CREATE_SERVICEACCOUNT,l.OV.ADMIN_UPDATE_SERVICEACCOUNT,l.OV.ADMIN_REMOVE_SERVICEACCOUNT,l.OV.ADMIN_LIST_SERVICEACCOUNTS],resource:l.Ms,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(j.A,{tooltip:"Create Access Key",children:(0,A.jsx)(o.$nd,{id:"create-service-account",label:"Create Access Key",variant:"callAction",icon:(0,A.jsx)(o.REV,{}),onClick:()=>{i("/identity/users/new-user-sa/".concat(encodeURIComponent(s)))},disabled:!t})})})]}),children:"Access Keys"}),(0,A.jsx)(o.bQt,{itemActions:G,entityName:"Access Keys",columns:k.X,onSelect:e=>(0,K.Qm)(e,I,w),selectedItems:w,isLoading:y,records:u,idField:"accessKey"})]})};var z=t(56629),N=t(53518);const T=e=>{let{open:s,userName:t,closeModal:a}=e;const r=(0,m.jL)(),[c,l]=(0,n.useState)(""),[d,u]=(0,n.useState)(""),[x,h]=(0,n.useState)(!1);return s?(0,A.jsx)(C.A,{title:"Change User Password",modalOpen:s,onClose:()=>{l(""),u(""),a()},titleIcon:(0,A.jsx)(o.Fwq,{}),children:(0,A.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{(e=>{if(e.preventDefault(),x)return;if(h(!0),c.length<8)return r((0,p.Dy)({errorMessage:"Passwords must be at least 8 characters long",detailedError:""})),void h(!1);let s={selectedUser:t,newSecretKey:c};z.F.account.changeUserPassword(s).then((e=>{h(!1),l(""),u(""),r((0,p.Hk)("Successfully updated the password for the user ".concat(t,"."))),a()})).catch((async e=>{h(!1),l(""),u("");const s=await e.json();r((0,p.C9)((0,N.S)(s)))}))})(e)},children:(0,A.jsxs)(o.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,A.jsxs)(o.azJ,{sx:{margin:"10px 0 20px"},children:["Change password for: ",(0,A.jsx)("strong",{children:t})]}),(0,A.jsx)(o.cl_,{id:"new-password",name:"new-password",onChange:e=>{l(e.target.value)},label:"New Password",type:"password",value:c}),(0,A.jsx)(o.cl_,{id:"re-new-password",name:"re-new-password",onChange:e=>{u(e.target.value)},label:"Type New Password Again",type:"password",value:d}),(0,A.jsx)(o.azJ,{sx:i.Uz.modalButtonBar,children:(0,A.jsx)(o.$nd,{id:"save-user-password",type:"submit",variant:"callAction",color:"primary",disabled:x||!(d.length>0&&c===d),label:"Save"})}),x&&(0,A.jsx)(o.azJ,{children:(0,A.jsx)(o.z21,{})})]})})}):null};var L=t(56071);const F=()=>{const e=(0,m.jL)(),s=(0,a.g)(),t=(0,a.Zp)(),[r,i]=(0,n.useState)(!1),[u,x]=(0,n.useState)(!1),[b,f]=(0,n.useState)(!1),[S,v]=(0,n.useState)(!1),[C,E]=(0,n.useState)(!1),[U,w]=(0,n.useState)([]),[O,R]=(0,n.useState)([]),[M,K]=(0,n.useState)([]),[D,k]=(0,n.useState)(!1),[z,N]=(0,n.useState)(!1),[F,G]=(0,n.useState)(!1),[J,B]=(0,n.useState)("groups"),V=(0,h._)(l.Ms,l.Ho)&&!C,$=(0,h._)(l.Ms,l.m0)&&C,H=s.userName||"",Y=localStorage.getItem("userLoggedIn")||"",Z=(0,h._)(l.Ms,l.$X,!0),W=(0,h._)(l.Ms,l.Lb,!0),Q=(0,h._)(l.Ms,l.Oh),q=(0,n.useCallback)((()=>{if(""===H)return null;i(!0),d.A.invoke("GET","/api/v1/user/".concat(encodeURIComponent(H))).then((e=>{v(!1);const s=e.memberOf||[];w(s);const t=s.map((e=>({group:e})));R(t);const n=e.policy.map((e=>({policy:e})));n.sort(c.rY),K(n),E("enabled"===e.status),G(e.hasPolicy),i(!1)})).catch((s=>{v(!1),i(!1),e((0,p.Dy)(s))}))}),[H,e]);(0,n.useEffect)((()=>{e((0,p.ph)("user_details_groups"))}),[]),(0,n.useEffect)((()=>{q()}),[q]);const X=[{type:"view",onClick:e=>{t("".concat(l.zZ.GROUPS,"/").concat(encodeURIComponent(e.group)))},disableButtonFunction:()=>!Q}];return(0,A.jsxs)(n.Fragment,{children:[u&&(0,A.jsx)(_,{open:u,selectedUser:H,closeModalAndRefresh:()=>{x(!1),q()}}),b&&(0,A.jsx)(I,{open:b,selectedUser:H,currentPolicies:M,closeModalAndRefresh:()=>{f(!1),q()}}),z&&(0,A.jsx)(L.default,{deleteOpen:z,selectedUsers:[H],closeDeleteModalAndRefresh:e=>{(e=>{N(!1),e&&q()})(e)}}),D&&(0,A.jsx)(T,{open:D,userName:H,closeModal:()=>k(!1)}),(0,A.jsx)(y.A,{label:(0,A.jsx)(n.Fragment,{children:(0,A.jsx)(o.EGL,{label:"Users",onClick:()=>t(l.zZ.USERS)})}),actions:(0,A.jsx)(g.A,{})}),(0,A.jsx)(o.Mxu,{children:(0,A.jsxs)(o.xA9,{container:!0,children:[(0,A.jsx)(o.xA9,{item:!0,xs:12,children:(0,A.jsx)(o.lcx,{icon:(0,A.jsx)(o.c2u,{width:40}),title:H,subTitle:"",actions:(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)("span",{style:{fontSize:".8rem",marginRight:".5rem"},children:"User Status:"}),(0,A.jsx)("span",{style:{fontWeight:"bold",fontSize:".9rem",marginRight:".5rem"},children:C?"Enabled":"Disabled"}),(0,A.jsx)(j.A,{tooltip:V||$?"":(0,h._)(l.Ms,l.Ho)?(0,l.vj)(l.m0,"disable users"):(0,h._)(l.Ms,l.m0)?(0,l.vj)(l.Ho,"enable users"):(0,l.vj)(l.ni,"enable or disable users"),children:(0,A.jsx)(o.dOG,{indicatorLabels:["Enabled","Disabled"],checked:C,value:"group_enabled",id:"group-status",name:"group-status",onChange:()=>{var s;E(!C),s=!C,S||(v(!0),d.A.invoke("PUT","/api/v1/user/".concat(encodeURIComponent(H)),{status:s?"enabled":"disabled",groups:U}).then((e=>{v(!1)})).catch((s=>{v(!1),e((0,p.Dy)(s))})))},switchOnly:!0,disabled:!V&&!$})}),(0,A.jsx)(j.A,{tooltip:(0,h._)(l.Ms,l.Dg)?Y===H?"You cannot delete the currently logged in User":"Delete User":(0,l.vj)(l.Dg,"delete user"),children:(0,A.jsx)(o.$nd,{id:"delete-user",onClick:()=>{N(!0)},icon:(0,A.jsx)(o.ucK,{}),variant:"secondary",disabled:!(0,h._)(l.Ms,l.Dg)||Y===H})}),(0,A.jsx)(j.A,{tooltip:"Change Password",children:(0,A.jsx)(o.$nd,{id:"change-user-password",onClick:()=>{k(!0)},icon:(0,A.jsx)(o.aJN,{}),variant:"regular",disabled:Y===H})})]}),sx:{marginBottom:15}})}),(0,A.jsx)(o.xA9,{item:!0,xs:12,children:(0,A.jsx)(o.tUM,{currentTabOrPath:J,onTabClick:B,options:[{tabConfig:{id:"groups",label:"Groups",disabled:!W},content:(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)(o.azJ,{onMouseMove:()=>e((0,p.ph)("user_details_groups")),children:(0,A.jsx)(o._xt,{separator:!0,sx:{marginBottom:15},actions:(0,A.jsx)(j.A,{tooltip:W?"Assign groups":(0,l.vj)(l.Lb,"add users to groups"),children:(0,A.jsx)(o.$nd,{id:"add-groups",label:"Add to Groups",onClick:()=>{x(!0)},icon:(0,A.jsx)(o.REV,{}),variant:"callAction",disabled:!W})}),children:"Groups"})}),(0,A.jsx)(o.xA9,{item:!0,xs:12,onMouseMove:()=>e((0,p.ph)("user_details_groups")),children:(0,A.jsx)(o.bQt,{itemActions:X,columns:[{label:"Name",elementKey:"group"}],isLoading:r,records:O,entityName:"Groups",idField:"group"})})]})},{tabConfig:{id:"service_accounts",label:"Service Accounts",disabled:!(0,h._)(l.Ms,l.xw)},content:(0,A.jsx)(P,{user:H,hasPolicy:F})},{tabConfig:{id:"policies",label:"Policies",disabled:!Z},content:(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)(o.azJ,{onMouseMove:()=>e((0,p.ph)("user_details_policies")),children:(0,A.jsx)(o._xt,{separator:!0,sx:{marginBottom:15},actions:(0,A.jsx)(j.A,{tooltip:Z?"Assign Policies":(0,l.vj)(l.$X,"assign policies"),children:(0,A.jsx)(o.$nd,{id:"assign-policies",label:"Assign Policies",onClick:()=>{f(!0)},icon:(0,A.jsx)(o.n$X,{}),variant:"callAction",disabled:!Z})}),children:"Policies"})}),(0,A.jsx)(o.azJ,{children:(0,A.jsx)(o.bQt,{itemActions:[{type:"view",onClick:e=>{t("".concat(l.zZ.POLICIES,"/").concat(encodeURIComponent(e.policy)))}}],columns:[{label:"Name",elementKey:"policy"}],isLoading:r,records:M,entityName:"Policies",idField:"policy"})})]})}]})})]})})]})};var G=t(88115);const J=e=>{let{icon:s,description:t}=e;return(0,A.jsxs)(o.azJ,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[s," ",(0,A.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})},B=()=>(0,A.jsxs)(o.azJ,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:0},children:[(0,A.jsxs)(o.azJ,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,A.jsx)(o.nag,{}),(0,A.jsx)("div",{children:"Learn more about the Users feature"})]}),(0,A.jsxs)(o.azJ,{sx:{fontSize:"14px",marginBottom:"15px"},children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Each user can have one or more assigned policies that explicitly list the actions and resources to which that user has access. Users can also inherit policies from the groups in which they have membership.",(0,A.jsx)("br",{})]}),(0,A.jsxs)(o.azJ,{sx:{display:"flex",flexFlow:"column"},children:[(0,A.jsx)(J,{icon:(0,A.jsx)(o.c2u,{}),description:"Create Users"}),(0,A.jsx)(J,{icon:(0,A.jsx)(o.YXz,{}),description:"Manage Groups"}),(0,A.jsx)(J,{icon:(0,A.jsx)(o.uYH,{}),description:"Assign Policies"})]})]}),V=()=>{const e=(0,m.jL)(),s=(0,E.d4)((e=>e.createUser.userName));return(0,A.jsx)(o.cl_,{id:"accesskey-input",name:"accesskey-input",label:"User Name",value:s,autoFocus:!0,onChange:s=>{e((0,U.ht)(s.target.value))}})},$=()=>{const e=(0,m.jL)(),s=(0,E.d4)((e=>e.createUser.secretKey));return(0,A.jsx)(o.cl_,{id:"standard-multiline-static",name:"standard-multiline-static",type:"password",label:"Password",value:s,onChange:s=>{e((0,U.ir)(s.target.value))},autoComplete:"current-password"})},H=()=>{const e=(0,m.jL)(),s=(0,E.d4)((e=>e.createUser.selectedPolicies)),t=(0,E.d4)((e=>e.createUser.selectedGroups)),r=(0,E.d4)((e=>e.createUser.addLoading)),c=(0,E.d4)((e=>e.createUser.sendEnabled)),d=(0,E.d4)((e=>e.createUser.secretKeylength)),u=(0,a.Zp)();e((0,U.yt)());return(0,n.useEffect)((()=>{e((0,p.ph)("add_user"))}),[]),(0,A.jsx)(n.Fragment,{children:(0,A.jsxs)(o.xA9,{item:!0,xs:12,children:[(0,A.jsx)(y.A,{label:(0,A.jsx)(o.EGL,{label:"Users",onClick:()=>u(l.zZ.USERS)}),actions:(0,A.jsx)(g.A,{})}),(0,A.jsx)(o.Mxu,{children:(0,A.jsx)(o.Hbc,{title:"Create User",icon:(0,A.jsx)(o.R$W,{}),helpBox:(0,A.jsx)(B,{}),children:(0,A.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{(s=>{if(s.preventDefault(),d<8)return e((0,p.C9)({errorMessage:"Passwords must be at least 8 characters long",detailedError:""})),void e((0,U.AE)(!1));r||(e((0,U.AE)(!0)),e((0,G.y)()).unwrap().then((()=>u("".concat(l.zZ.USERS)))))})(s)},children:[(0,A.jsx)(V,{}),(0,A.jsx)($,{}),(0,A.jsx)(w.A,{selectedPolicy:s}),(0,A.jsx)(v.A,{selectedGroups:t,setSelectedGroups:s=>{e((0,U.yD)(s))}}),r&&(0,A.jsx)(o.xA9,{item:!0,xs:12,children:(0,A.jsx)(o.z21,{})}),(0,A.jsxs)(o.xA9,{item:!0,xs:12,sx:i.Uz.modalButtonBar,children:[(0,A.jsx)(o.$nd,{id:"clear-add-user",type:"button",variant:"regular",onClick:s=>{e((0,G.o)())},label:"Clear"}),(0,A.jsx)(o.$nd,{id:"save-user",type:"submit",variant:"callAction",color:"primary",disabled:r||!c,label:"Save"})]})]})})})]})})};var Y=t(56483),Z=t(41206);const W=e=>{let{icon:s,description:t}=e;return(0,A.jsxs)(o.azJ,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[s," ",(0,A.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})},Q=()=>(0,A.jsxs)(o.azJ,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:0},children:[(0,A.jsxs)(o.azJ,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,A.jsx)(o.nag,{}),(0,A.jsx)("div",{children:"Learn more about Access Keys"})]}),(0,A.jsxs)(o.azJ,{sx:{fontSize:"14px",marginBottom:"15px"},children:[(0,A.jsxs)(o.azJ,{sx:{paddingBottom:"20px"},children:[(0,A.jsx)(W,{icon:(0,A.jsx)(o.ehx,{}),description:"Create Access Keys"}),(0,A.jsx)(o.azJ,{sx:{paddingTop:"20px"},children:"Access Keys inherit the policies explicitly attached to the parent user, and the policies attached to each group in which the parent user has membership."})]}),(0,A.jsxs)(o.azJ,{sx:{paddingBottom:"20px"},children:[(0,A.jsx)(W,{icon:(0,A.jsx)(o.aJN,{}),description:"Assign Custom Credentials"}),(0,A.jsx)(o.azJ,{sx:{paddingTop:"10px"},children:"Randomized access credentials are recommended, and provided by default. You may use your own custom Access Key and Secret Key by replacing the default values. After creation of any Access Key, you will be given the opportunity to view and download the account credentials."}),(0,A.jsx)(o.azJ,{sx:{paddingTop:"10px"},children:"Access Keys support programmatic access by applications. You cannot use a Access Key to log into the MinIO Console."})]}),(0,A.jsxs)(o.azJ,{sx:{paddingBottom:"20px"},children:[(0,A.jsx)(W,{icon:(0,A.jsx)(o.n$X,{}),description:"Assign Access Policies"}),(0,A.jsx)(o.azJ,{sx:{paddingTop:"10px"},children:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),(0,A.jsx)(o.azJ,{sx:{paddingTop:"10px"},children:"You cannot modify the optional Access Key IAM policy after saving."})]})]}),(0,A.jsx)(o.azJ,{sx:{display:"flex",flexFlow:"column"}})]});var q=t(11441);const X=()=>{const e=(0,m.jL)(),s=(0,a.g)(),t=(0,a.Zp)(),[r,c]=(0,n.useState)(!1),[u,x]=(0,n.useState)((0,Y.$f)(20)),[h,j]=(0,n.useState)((0,Y.$f)(40)),[b,f]=(0,n.useState)(!1),[S,v]=(0,n.useState)(null),[C,_]=(0,n.useState)(""),E=s.userName||"",[U,w]=(0,n.useState)(""),[I,O]=(0,n.useState)(""),[M,K]=(0,n.useState)(""),[D,k]=(0,n.useState)();(0,n.useEffect)((()=>{if(r){const s=D?D.toJSDate().toISOString():null;d.A.invoke("POST","/api/v1/user/".concat(encodeURIComponent(E),"/service-account-credentials"),{policy:C,accessKey:u,secretKey:h,description:I,comment:M,name:U,expiry:s}).then((e=>{c(!1),v({accessKey:e.accessKey||"",secretKey:e.secretKey||"",url:e.url||""})})).catch((s=>{c(!1),e((0,p.C9)(s))}))}}),[r,c,e,C,E,u,h,U,I,D,M]),(0,n.useEffect)((()=>{b&&d.A.invoke("GET","/api/v1/user/".concat(encodeURIComponent(E),"/policies")).then((e=>{_(JSON.stringify(JSON.parse(e.policy),null,4))})).catch((e=>{(0,p.C9)(e)}))}),[b,E]);return(0,n.useEffect)((()=>{e((0,p.ph)("add_user_SA"))}),[]),(0,A.jsxs)(n.Fragment,{children:[S&&(0,A.jsx)(R.A,{newServiceAccount:S,open:!0,closeModal:()=>{v(null),t("".concat(l.zZ.USERS,"/").concat(encodeURIComponent(E)))},entity:"Access Key"}),(0,A.jsxs)(o.xA9,{item:!0,xs:12,children:[(0,A.jsx)(y.A,{label:(0,A.jsx)(o.EGL,{onClick:()=>t("".concat(l.zZ.USERS,"/").concat(encodeURIComponent(E))),label:"User Details - "+E}),actions:(0,A.jsx)(g.A,{})}),(0,A.jsx)(o.Mxu,{children:(0,A.jsx)(o.Hbc,{helpBox:(0,A.jsx)(Q,{}),icon:(0,A.jsx)(o.kQt,{}),title:"Create Access Key for ".concat(E),children:(0,A.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{e.preventDefault(),(e=>{e.preventDefault(),c(!0)})(e)},children:[(0,A.jsx)(o.cl_,{value:u,label:"Access Key",id:"accessKey",name:"accessKey",placeholder:"Enter Access Key",onChange:e=>{x(e.target.value)},startIcon:(0,A.jsx)(o.ehx,{})}),(0,A.jsx)(o.cl_,{value:h,label:"Secret Key",id:"secretKey",name:"secretKey",type:"password",placeholder:"Enter Secret Key",onChange:e=>{j(e.target.value)},startIcon:(0,A.jsx)(o.aJN,{})}),(0,A.jsx)(o.dOG,{value:"serviceAccountPolicy",id:"serviceAccountPolicy",name:"serviceAccountPolicy",checked:b,onChange:e=>{f(e.target.checked)},label:"Restrict beyond user policy",description:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),b&&(0,A.jsxs)(o.xA9,{item:!0,xs:12,children:[(0,A.jsx)(o.azJ,{children:(0,A.jsx)(o.V7x,{content:(0,A.jsx)(n.Fragment,{children:(0,A.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})}),placement:"right",children:(0,A.jsx)(q.A,{children:"Current User Policy - edit the JSON to remove permissions for this Access Key"})})}),(0,A.jsx)(o.xA9,{item:!0,xs:12,sx:{...i.Uz.formScrollable},children:(0,A.jsx)(Z.A,{value:C,onChange:e=>{_(e)},editorHeight:"350px",helptip:(0,A.jsx)(n.Fragment,{children:(0,A.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure",children:"Guide to access policy structure"})})})})]}),(0,A.jsx)(o.azJ,{sx:{marginBottom:"15px",marginTop:"15px",width:"100%","& label":{width:"180px"}},children:(0,A.jsx)(o.e8j,{noLabelMinWidth:!0,value:D,onChange:e=>{k(e)},id:"expiryTime",label:"Expiry",timeFormat:"24h",secondsSelector:!1})}),(0,A.jsx)(o.cl_,{value:U,label:"Name",id:"name",name:"name",type:"text",placeholder:"Enter a name",onChange:e=>{w(e.target.value)}}),(0,A.jsx)(o.cl_,{value:I,label:"Description",id:"description",name:"description",type:"text",placeholder:"Enter a description",onChange:e=>{O(e.target.value)}}),(0,A.jsx)(o.cl_,{value:M,label:"Comments",id:"comment",name:"comment",type:"text",placeholder:"Enter a comment",onChange:e=>{K(e.target.value)}}),(0,A.jsxs)(o.xA9,{item:!0,xs:12,sx:{...i.Uz.modalButtonBar},children:[(0,A.jsx)(o.$nd,{id:"clear",type:"button",variant:"regular",onClick:()=>{v(null),x(""),j("")},label:"Clear"}),(0,A.jsx)(o.$nd,{id:"create-sa",type:"submit",variant:"callAction",color:"primary",label:"Create"})]})]})})})]})]})},ee=()=>(0,A.jsxs)(a.BV,{children:[(0,A.jsx)(a.qh,{path:"add-user",element:(0,A.jsx)(H,{})}),(0,A.jsx)(a.qh,{path:":userName",element:(0,A.jsx)(F,{})}),(0,A.jsx)(a.qh,{path:"new-user-sa/:userName",element:(0,A.jsx)(X,{})}),(0,A.jsx)(a.qh,{path:"/",element:(0,A.jsx)(S,{})}),(0,A.jsx)(a.qh,{element:(0,A.jsx)(r.A,{})})]})}}]); +//# sourceMappingURL=3527.b7757ae8.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/3527.b7757ae8.chunk.js.map b/web-app/build/static/js/3527.b7757ae8.chunk.js.map new file mode 100644 index 000000000..478344b49 --- /dev/null +++ b/web-app/build/static/js/3527.b7757ae8.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/3527.b7757ae8.chunk.js","mappings":"kOA+BA,MAyDA,EAzD6BA,IAIM,IAJL,2BAC5BC,EAA0B,WAC1BC,EAAU,uBACVC,GAC2BH,EAC3B,MAAMI,GAAWC,EAAAA,EAAAA,OAGVC,EAAeC,IAAoBC,EAAAA,EAAAA,WAAkB,GAE5D,IAAKL,EACH,OAAO,KAkBT,OACEM,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,oBACLC,YAAa,SACbC,OAAQX,EACRY,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWV,EACXW,UAtBoBC,KACtBX,GAAiB,GACjBY,EAAAA,EAAIC,gBACDC,qBAAqBlB,GACrBmB,MAAMC,IACLtB,GAA2B,EAAK,IAEjCuB,OAAMC,UACL,MAAMC,QAAaC,EAAIC,OACvBxB,GAASyB,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,KAC7CzB,GAA2B,EAAM,IAElC8B,SAAQ,IAAMxB,GAAiB,IAAO,EAWvCyB,QA/BYA,IAAM/B,GAA2B,GAgC7CgC,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,6CACmC,KAC3C3B,EAAAA,EAAAA,KAAA,KACE4B,MAAO,CACLC,SAAU,QACVC,WAAY,SACZC,SAAU,cACVJ,SAEDjC,IACC,QAIR,C,4JCzDN,MAgCA,EAhCuBH,IAAmD,IAAlD,MAAEyC,EAAQ,GAAE,MAAEC,EAAQ,IAAsB1C,EAClE,MAAMI,GAAWC,EAAAA,EAAAA,MAEjB,OACE6B,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CAACC,GAAI,CAAEC,UAAW,IAAKT,SAAA,EACzB3B,EAAAA,EAAAA,KAACqC,EAAAA,IAAU,CAAAV,SAAEK,KACbhC,EAAAA,EAAAA,KAACsC,EAAAA,IAAO,CACNC,cACEvC,EAAAA,EAAAA,KAACwC,IAAe,CAACC,KAAMR,EAAMN,UAC3B3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,YACJC,QAAQ,UACRC,QAASA,KACPlD,GAASmD,EAAAA,EAAAA,IAAqB,GAADC,OAAIf,EAAK,yBAAwB,EAEhEJ,MAAO,CACLoB,YAAa,MACbC,MAAO,OACPC,OAAQ,OACRC,QAAS,OAEXC,MAAMpD,EAAAA,EAAAA,KAACqD,EAAAA,IAAQ,QAGpB1B,SAEAM,MAEC,E,yBCtBV,MAAMqB,EAAeC,EAAAA,GAAOC,KAAIjE,IAAA,IAAC,MAAEkE,GAAOlE,EAAA,MAAM,CAC9CmE,MAAOC,IAAIF,EAAO,sBAAuB,WACzCG,SAAU,SACVC,OAAQ,kBACRC,QAAS,OACTC,WAAY,SACZ,SAAU,CACRf,YAAa,QACbE,OAAQ,GACRD,MAAO,IAEV,IASKe,EAAWA,CAACC,EAAkBxB,KAClC,IAAIyB,EAAUC,SAASC,cAAc,KACrCF,EAAQG,aAAa,OAAQ,iCAAmC5B,GAChEyB,EAAQG,aAAa,WAAYJ,GAEjCC,EAAQtC,MAAMkC,QAAU,OACxBK,SAASG,KAAKC,YAAYL,GAE1BA,EAAQM,QACRL,SAASG,KAAKG,YAAYP,EAAQ,EAgNpC,EA7M0BQ,IAKM,IALL,kBACzBC,EAAiB,KACjBC,EAAI,WACJC,EAAU,OACVC,GACwBJ,EACxB,IAAKC,EACH,OAAO,KAET,MAAMI,EAAepB,IAAIgB,EAAmB,UAAW,MACjDK,EAAMrB,IAAIgB,EAAmB,OAAO,GAmE1C,OACE3E,EAAAA,EAAAA,KAACiF,EAAAA,EAAY,CACXC,UAAWN,EACXrD,QAASA,KACPsD,GAAY,EAEd3E,MAAK,OAAA6C,OAAS+B,EAAM,YACpBzE,WAAWL,EAAAA,EAAAA,KAACmF,EAAAA,IAA6B,IAAIxD,UAE7CF,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACC,WAAS,EAAA1D,SAAA,EACbF,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAG5D,SAAA,CAAC,SACVmD,EAAO,iDACZE,GAAOD,IACP/E,EAAAA,EAAAA,KAAC0B,EAAAA,SAAQ,CAAAC,UACPF,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CACHE,MAAI,EACJC,GAAI,GACJpD,GAAI,CACFqD,UAAW,OACXC,UAAW,KACX9D,SAAA,EAEF3B,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CACFC,GAAI,CACFgB,QAAS,cACTuC,WAAY,IACZ9B,SAAU,SACVjC,SACH,wBAGAgE,MAAMC,QAAQb,IACbA,EAAac,KAAI,CAACC,EAAiBC,KAE/BtE,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACP3B,EAAAA,EAAAA,KAACgG,EAAc,CACbhE,MAAM,aACNC,MAAO6D,EAAgBG,aAEzBjG,EAAAA,EAAAA,KAACgG,EAAc,CACbhE,MAAM,aACNC,MAAO6D,EAAgBI,kBAK/BP,MAAMC,QAAQb,KACdtD,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACP3B,EAAAA,EAAAA,KAACgG,EAAc,CACbhE,MAAM,aACNC,MAAO8C,EAAakB,aAEtBjG,EAAAA,EAAAA,KAACgG,EAAc,CACbhE,MAAM,aACNC,MAAO8C,EAAamB,qBAOb,OAAjBnB,QAA0CoB,IAAjBpB,KACzBtD,EAAAA,EAAAA,MAAA2E,EAAAA,SAAA,CAAAzE,SAAA,EACE3B,EAAAA,EAAAA,KAACgG,EAAc,CACbhE,MAAM,aACNC,MAAO0C,EAAkBsB,WAAa,MAExCjG,EAAAA,EAAAA,KAACgG,EAAc,CACbhE,MAAM,aACNC,MAAO0C,EAAkBuB,WAAa,QAI3ClB,GACChF,EAAAA,EAAAA,KAACsD,EAAY,CAAA3B,SAAC,iEAIdF,EAAAA,EAAAA,MAAC6B,EAAY,CAAA3B,SAAA,EACX3B,EAAAA,EAAAA,KAACqG,EAAAA,IAAQ,KACTrG,EAAAA,EAAAA,KAAA,QAAA2B,SAAM,oFAOZ3B,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIpD,GAAI,IAAKmE,EAAAA,GAAgBC,gBAAiB5E,UACzDqD,IACAvD,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACP3B,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CACbC,QACE,wIACD9E,UAED3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,kBACJX,MAAO,sBACPa,QAnKO6D,KACrB,IAAIC,EAAgB,CAAC,EAErB,GAAI5B,EACF,GAAKY,MAAMC,QAAQb,GAQZ,CAUL4B,EATe5B,EAAac,KAAKe,IACxB,CACLC,IAAKD,EAAQC,IACbZ,UAAWW,EAAQX,UACnBC,UAAWU,EAAQV,UACnBxF,IAAK,OACLoG,KAAM,WAGa,EACzB,MAlBEH,EAAgB,CACdE,IAAK9B,EAAa8B,IAClBZ,UAAWlB,EAAakB,UACxBC,UAAWnB,EAAamB,UACxBxF,IAAK,OACLoG,KAAM,aAeVH,EAAgB,CACdE,IAAKlC,EAAkBkC,IACvBZ,UAAWtB,EAAkBsB,UAC7BC,UAAWvB,EAAkBuB,UAC7BxF,IAAK,OACLoG,KAAM,QAIV9C,EACE,mBACA+C,KAAKC,UAAU,IACVL,IAEN,EA6HavD,MAAMpD,EAAAA,EAAAA,KAACiH,EAAAA,IAAY,IACnBrE,QAAQ,iBAIX+C,MAAMC,QAAQb,IAAiBA,EAAamC,OAAS,IACpDlH,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CACbC,QACE,iNACD9E,UAED3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,sBACJX,MAAO,kCACPa,QAxIcsE,KAC9B,IAAIC,EAAiB,CAAC,EACtB,GACErC,GACAY,MAAMC,QAAQb,IACdA,EAAamC,OAAS,EACtB,CAOAE,EANerC,EAAac,KAAKe,IACxB,CACLX,UAAWW,EAAQX,UACnBC,UAAWU,EAAQV,aAIzB,CACAlC,EACE,uBACA+C,KAAKC,UAAU,IACVI,IAEN,EAqHehE,MAAMpD,EAAAA,EAAAA,KAACiH,EAAAA,IAAY,IACnBrE,QAAQ,aACRc,MAAM,uBAQP,C,sECvPnB,MAAM2D,EAAsB9D,EAAAA,GAAO+D,IAAG,MACpCnE,QAAS,EACTU,OAAQ,EACRD,SAAU,YAWZ,EAJmBrE,IAAgC,IAA/B,SAAEoC,GAAuBpC,EAC3C,OAAOS,EAAAA,EAAAA,KAACqH,EAAmB,CAAA1F,SAAEA,GAA+B,C,oJCG9D,MAuGA,EAvGwBpC,IAA8C,IAA7C,QAAEgI,GAAU,GAA2BhI,EAC9D,MAAMI,GAAWC,EAAAA,EAAAA,OAEV4H,EAASC,IAAc1H,EAAAA,EAAAA,UAAgB,KACvC2H,EAASnH,IAAaR,EAAAA,EAAAA,WAAkB,IACxC4H,EAAQC,IAAa7H,EAAAA,EAAAA,UAAiB,IAEvC8H,GAAkBC,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,WAAWC,mBAGlCC,GAAgBC,EAAAA,EAAAA,cAAY,KAChC5H,GAAU,GAEVG,EAAAA,EAAI0H,SACDC,eACAxH,MAAMK,IAAS,IAADoH,EACb,MAAMF,EAA4B,QAApBE,EAAGpH,EAAIqH,KAAKH,gBAAQ,IAAAE,EAAAA,EAAI,GACtC/H,GAAU,GACVkH,EAAWW,EAASI,KAAKC,EAAAA,IAAY,IAEtC1H,OAAOE,IACNV,GAAU,GACVZ,GAAS+I,EAAAA,EAAAA,IAA0BzH,GAAK,GACxC,GACH,CAACtB,KAGJgJ,EAAAA,EAAAA,YAAU,KACRpI,GAAU,EAAK,GACd,KAEHoI,EAAAA,EAAAA,YAAU,KACJjB,GACFQ,GACF,GACC,CAACR,EAASQ,IAEb,MAoBMU,EAAkBpB,EAAQG,QAAQkB,GACtCA,EAAYC,KAAKC,SAASpB,KAG5B,OACElG,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIyD,UAAW,YAAYrH,SAAA,CACvC+F,IAAW1H,EAAAA,EAAAA,KAACiJ,EAAAA,IAAW,IACvBzB,EAAQN,OAAS,GAChBzF,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACP3B,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIyD,UAAW,YAAYrH,UACxC3B,EAAAA,EAAAA,KAACkJ,EAAAA,EAAS,CACRC,YAAY,sCACZC,SAAWnH,IACT2F,EAAU3F,EAAM,EAElBA,MAAO0F,EACP3F,MAAQuF,EAA8B,GAApB,uBAItBvH,EAAAA,EAAAA,KAACqJ,EAAAA,IAAS,CACRC,QAAS,CAAC,CAAEtH,MAAO,SAAUuH,WAAY,SACzCC,SA1CgBC,IACxB,MAAMC,EAAUD,EAAEE,OACZ1H,EAAQyH,EAAQzH,MAChB2H,EAAUF,EAAQE,QAExB,IAAIC,EAAqB,IAAIhC,GAEzB+B,EAEFC,EAASC,KAAK7H,GAGd4H,EAAWA,EAASlC,QAAQzD,GAAYA,IAAYjC,IAGtD4H,EAAWA,EAASlC,QAAQzD,GAAwB,KAAZA,IAExCvE,GAASoK,EAAAA,EAAAA,IAAoBF,GAAU,EA0B/BG,cAAenC,EACftH,UAAWmH,EACXF,QAASoB,EACTqB,WAAW,WACXC,QAAQ,OACRC,kBAAmB,cAIvBnK,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CACFC,GAAI,CACFiI,UAAW,SACXjH,QAAS,UACTxB,SACH,4BAIE,C,kKCnGX,MAkJA,EAlJmBpC,IAIM,IAJL,2BAClBC,EAA0B,WAC1BC,EAAU,cACV4K,GACiB9K,EACjB,MAAM+K,GAAWC,EAAAA,EAAAA,MACX5K,GAAWC,EAAAA,EAAAA,MAEX2B,EAAUA,IAAM/B,GAA2B,IAE1CgL,EAAWC,IAAgB1K,EAAAA,EAAAA,WAAkB,IAC7C2K,EAAOC,IAAY5K,EAAAA,EAAAA,WAAkB,IACrC6K,EAAYC,IAAiB9K,EAAAA,EAAAA,UAAmC,KAChE+K,EAAeC,IAAoBhL,EAAAA,EAAAA,WAAkB,GAEtDiL,EAAeC,aAAaC,QAAQ,iBAAmB,GAqB7D,IAnBAvC,EAAAA,EAAAA,YAAU,KACJ0B,GACF3J,EAAAA,EAAIyK,MACDC,yBAAyBf,GACzBxJ,MAAMK,IACU,IAADmK,EAAVnK,EAAIqH,OACNsC,EAA6C,QAAhCQ,EAACnK,EAAIqH,KAAK+C,8BAAsB,IAAAD,EAAAA,EAAI,IAC7CnK,EAAIqH,KAAKmC,OACXC,GAAS,GAEb,IAED5J,OAAOE,GACNtB,GAASyB,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,EAAIsK,WAElDjK,SAAQ,IAAMmJ,GAAa,IAChC,GACC,CAACJ,EAAe1K,KAEd0K,EACH,OAAO,KAET,MAAMmB,EAAcnB,EAAcxE,KAAK4F,IACrCzL,EAAAA,EAAAA,KAAA,OAAA2B,UACE3B,EAAAA,EAAAA,KAAA,KAAA2B,SAAI8J,KADIA,KAUNC,EAAe,CACnB,CACEC,KAAM,OACN9I,QATgB+I,IAClBtB,EAAS,GAADvH,OACH8I,EAAAA,GAAUC,MAAK,KAAA/I,OAAIgJ,mBAAmBH,EAAiBI,YAE5DzK,GAAS,IA+BL0K,EACJ,iDACA5B,EAAcnD,OADd,SAICmD,EAAcnD,OAAS,EAAI,KAAO,KAErC,OACElH,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,cAAA6C,OAAgBsH,EAAcnD,OAAS,EAAI,IAAM,IACtD/G,YAAa,SACbC,OAAQX,EACRY,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWuK,EACXtK,UApCoBC,KACtB,IAAK,IAAIgL,KAAQpB,EACXoB,IAAST,GACXrL,GACEyB,EAAAA,EAAAA,IAAqB,CACnB8K,aAAc,yCACdC,cAAc,0CAADpJ,OAA4CiI,MAG7DxL,GAA2B,IAE3BkB,EAAAA,EAAI+K,KACDW,WAAWX,GACX5K,MAAMK,IACL1B,GAA2B,GAC3B8K,EAAS,GAADvH,OAAI8I,EAAAA,GAAUC,OAAQ,IAE/BxK,SAAQ,IAAMyJ,GAAiB,IAEtC,EAkBExJ,QAASA,EACTC,oBACEgJ,GACExK,EAAAA,EAAAA,KAACqM,EAAAA,IAAM,KAEPrM,EAAAA,EAAAA,KAAC0B,EAAAA,SAAQ,CAAAC,SACN+I,GACCjJ,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACP3B,EAAAA,EAAAA,KAACsM,EAAAA,IAAkB,CACjB1J,QAAS,UACT2J,SACE9K,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,mJAIR3B,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,UAAA2B,SAAQ,0CAGZzB,MAAM,kEACNiC,GAAI,CAAE0B,OAAQ,aAEhB7D,EAAAA,EAAAA,KAACqJ,EAAAA,IAAS,CACRmD,YAAad,EACbpC,QAAS,CACP,CAAEtH,MAAO,WAAYuH,WAAY,YACjC,CACEvH,MAAO,2BACPuH,WAAY,WAGhBhJ,UAAWiK,EACXhD,QAASoD,EACTX,WAAW,mBACXC,QAAQ,WACRC,kBAAkB,YAItB1I,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CACNsK,EACAT,QAMX,C,kJC9IN,MAsGA,EAtGwBjM,IAGH,IAHI,eACvBkN,EAAc,kBACdC,GACanN,EACb,MAAMI,GAAWC,EAAAA,EAAAA,OAEV4H,EAASC,IAAc1H,EAAAA,EAAAA,UAAgB,KACvC2H,EAASnH,IAAaR,EAAAA,EAAAA,WAAkB,IACxC4H,EAAQC,IAAa7H,EAAAA,EAAAA,UAAiB,IAEvC4M,GAAcxE,EAAAA,EAAAA,cAAY,KAC9BzH,EAAAA,EACGkM,OAAO,MAAM,kBACb/L,MAAMK,IACL,IAAI2L,EAASlJ,IAAIzC,EAAK,SAAU,IAE3B2L,IACHA,EAAS,IAEXpF,EAAWoF,EAAOrE,KAAKsE,EAAAA,KACvBvM,GAAU,EAAM,IAEjBQ,OAAOE,IACNtB,GAAS+I,EAAAA,EAAAA,IAA0BzH,IACnCV,GAAU,EAAM,GAChB,GACH,CAACZ,KAGJgJ,EAAAA,EAAAA,YAAU,KACRpI,GAAU,EAAK,GACd,KAEHoI,EAAAA,EAAAA,YAAU,KACJjB,GACFiF,GACF,GACC,CAACjF,EAASiF,IAEb,MAAMI,EAAaN,GAAiB,GAqB9B7D,EAAkBpB,EAAQG,QAAQkB,GACtCA,EAAYE,SAASpB,KAGvB,OACElG,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIyD,UAAW,YAAYrH,SAAA,CACvC+F,IAAW1H,EAAAA,EAAAA,KAACiJ,EAAAA,IAAW,IACX,OAAZzB,GAAoBA,EAAQN,OAAS,GACpCzF,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACP3B,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIyD,UAAW,YAAYrH,UACxC3B,EAAAA,EAAAA,KAACkJ,EAAAA,EAAS,CACRC,YAAY,oCACZC,SAAUxB,EACV3F,MAAO0F,EACP3F,MAAO,qBAGXhC,EAAAA,EAAAA,KAACqJ,EAAAA,IAAS,CACRC,QAAS,CAAC,CAAEtH,MAAO,UACnBwH,SAtCgBC,IACxB,MAAMC,EAAUD,EAAEE,OACZ1H,EAAQyH,EAAQzH,MAChB2H,EAAUF,EAAQE,QAExB,IAAIC,EAAqB,IAAIkD,GAW7B,OATInD,EAEFC,EAASC,KAAK7H,GAGd4H,EAAWA,EAASlC,QAAQzD,GAAYA,IAAYjC,IAEtDyK,EAAkB7C,GAEXA,CAAQ,EAuBPG,cAAe+C,EACfxM,UAAWmH,EACXF,QAASoB,EACTqB,WAAW,SACXC,QAAQ,GACRC,kBAAmB,cAIvBnK,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CACFC,GAAI,CACFiI,UAAW,SACXjH,QAAS,UACTxB,SACH,0BAIE,C,8OCtEX,MAAMqL,GAAaC,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,IAAM,2CAC3CC,GAAaF,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,IAAM,iCAwZjD,EAtZkBE,KAChB,MAAMzN,GAAWC,EAAAA,EAAAA,MACX0K,GAAWC,EAAAA,EAAAA,OAEV/C,EAASC,IAAc1H,EAAAA,EAAAA,UAAiB,KACxC2H,EAAS2F,IAActN,EAAAA,EAAAA,WAAkB,IACzCN,EAAY6N,IAAiBvN,EAAAA,EAAAA,WAAkB,IAC/CwN,EAAcC,IAAmBzN,EAAAA,EAAAA,WAAkB,IACnD4H,EAAQC,IAAa7H,EAAAA,EAAAA,UAAiB,KACtC0N,EAAcC,IAAmB3N,EAAAA,EAAAA,UAAmB,IAErD4N,GAAmBC,EAAAA,EAAAA,GACvBC,EAAAA,GACAC,EAAAA,IAGIC,GAAWH,EAAAA,EAAAA,GAAcC,EAAAA,GAAqBG,EAAAA,IAE9CC,GAAiBL,EAAAA,EAAAA,GACrBC,EAAAA,GACAK,EAAAA,IAGIC,GAAaP,EAAAA,EAAAA,GAAcC,EAAAA,GAAqBO,EAAAA,KAiBtDzF,EAAAA,EAAAA,YAAU,KACJjB,IACEiG,EACFjN,EAAAA,EACGkM,OAAO,MAAM,iBACb/L,MAAMK,IACL,MAAMiK,EAAsB,OAAdjK,EAAIiK,MAAiB,GAAKjK,EAAIiK,MAE5CkC,GAAW,GACX5F,EAAW0D,EAAM3C,KAAK6F,EAAAA,IAAW,IAElCtN,OAAOE,IACNoM,GAAW,GACX1N,GAASyB,EAAAA,EAAAA,IAAqBH,GAAK,IAGvCoM,GAAW,GAEf,GACC,CAAC3F,EAAS/H,EAAUgO,IAEvB,MAAM/E,EAAkBpB,EAAQG,QAAQkB,GACtCA,EAAY5C,UAAU8C,SAASpB,KAqB3B2G,EAAc1C,IAClBtB,EAAS,GAADvH,OACH8I,EAAAA,GAAUC,MAAK,KAAA/I,OAAIgJ,mBAAmBH,EAAiB3F,YAC3D,EAGGyF,EAAe,CACnB,CACEC,KAAM,OACN9I,QAASyL,EACTC,sBAAuBA,KAAOR,GAEhC,CACEpC,KAAM,OACN9I,QAASyL,EACTC,sBAAuBA,KAAOR,IASlC,OALApF,EAAAA,EAAAA,YAAU,KACRhJ,GAAS6O,EAAAA,EAAAA,IAAY,cAAc,GAElC,KAGD/M,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CACNlC,IACCO,EAAAA,EAAAA,KAACgN,EAAU,CACTvN,WAAYA,EACZ4K,cAAeoD,EACfjO,2BAA6BiP,IAxFDA,KAClCnB,GAAc,GACVmB,IACFpB,GAAW,GACXK,EAAgB,IAClB,EAoFQlO,CAA2BiP,EAAQ,IAIxClB,IACCvN,EAAAA,EAAAA,KAACmN,EAAU,CACTvI,KAAM2I,EACNE,aAAcA,EACdiB,qBAAuBC,KAzFL,WAAkC,IAAjCC,EAAmBC,UAAA3H,OAAA,QAAAf,IAAA0I,UAAA,IAAAA,UAAA,GAC5CrB,GAAgB,GACZoB,GACFlB,EAAgB,GAEpB,CAqFUoB,CAAkBH,EAAM,KAI9B3O,EAAAA,EAAAA,KAAC+O,EAAAA,EAAiB,CAAC/M,MAAO,QAASgN,SAAShP,EAAAA,EAAAA,KAACiP,EAAAA,EAAQ,OAErDjP,EAAAA,EAAAA,KAACkP,EAAAA,IAAU,CAAAvN,UACTF,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACC,WAAS,EAAA1D,SAAA,EACbF,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIpD,GAAIgN,EAAAA,GAAYA,YAAYxN,SAAA,EAC7C3B,EAAAA,EAAAA,KAACkJ,EAAAA,EAAS,CACRC,YAAa,eACbC,SAAUxB,EACV3F,MAAO0F,EACPxF,GAAI,CACFa,YAAa,OACbnB,SAAU,QAGd7B,EAAAA,EAAAA,KAACoP,EAAAA,EAAe,CACdC,SAAUxB,EAAAA,GACVyB,OAAQ,CAACC,EAAAA,GAAWC,mBACpBC,UAAQ,EACRC,WAAY,CAAEC,UAAU,GAAOhO,UAE/B3B,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CACbC,SACEmH,EAAAA,EAAAA,GAAc,UAAW,CAAC2B,EAAAA,GAAWC,oBACT,IAAxB/B,EAAavG,OACX,yBACA,mBACF0I,EAAAA,EAAAA,IACE,CAACL,EAAAA,GAAWC,mBACZ,gBAEP7N,UAED3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,wBACJE,QAASA,KACPyK,GAAc,EAAK,EAErBtL,MAAO,kBACPoB,MAAMpD,EAAAA,EAAAA,KAAC6P,EAAAA,IAAU,IACjBF,SAAkC,IAAxBlC,EAAavG,OACvBtE,QAAS,YACT,aAAW,+BAIjB5C,EAAAA,EAAAA,KAACoP,EAAAA,EAAe,CACdE,OAAQ,CAACC,EAAAA,GAAWO,yBACpBT,SAAUxB,EAAAA,GACV6B,WAAY,CAAEC,UAAU,GAAOhO,UAE/B3B,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CACbC,SACEmH,EAAAA,EAAAA,GAAc,UAAW,CAAC2B,EAAAA,GAAWO,0BACT,IAAxBrC,EAAavG,OACX,wBACA,gBACF0I,EAAAA,EAAAA,IACE,CAACL,EAAAA,GAAWO,yBACZ,uBAEPnO,UAED3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,eACJX,MAAO,eACPoB,MAAMpD,EAAAA,EAAAA,KAAC+P,EAAAA,IAAU,IACjBJ,SAAUlC,EAAavG,QAAU,EACjCrE,QAASA,KACH4K,EAAavG,OAAS,GACxBsG,GAAgB,EAClB,EAEF5K,QAAS,iBAIf5C,EAAAA,EAAAA,KAACoP,EAAAA,EAAe,CACdE,OAAQ,CACNC,EAAAA,GAAWS,kBACXT,EAAAA,GAAWU,yBACXV,EAAAA,GAAWW,mBAEbb,SAAUc,EAAAA,GACVV,UAAQ,EACRC,WAAY,CAAEC,UAAU,GAAOhO,UAE/B3B,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CACbC,SACEmH,EAAAA,EAAAA,GACE,aACA,CACE2B,EAAAA,GAAWS,kBACXT,EAAAA,GAAWU,yBACXV,EAAAA,GAAWW,kBACXX,EAAAA,GAAWa,oCAEb,GAEE,eACAR,EAAAA,EAAAA,IACE,CACEL,EAAAA,GAAWS,kBACXT,EAAAA,GAAWU,yBACXV,EAAAA,GAAWW,kBACXX,EAAAA,GAAWa,mCAEb,gBAEPzO,UAED3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,cACJX,MAAO,cACPoB,MAAMpD,EAAAA,EAAAA,KAACqQ,EAAAA,IAAO,IACdxN,QAASA,KACPyH,EAAS,GAADvH,OAAI8I,EAAAA,GAAUyE,UAAW,EAEnC1N,QAAS,aACT+M,WACG/B,EAAAA,EAAAA,GACC,aACA,CACE2B,EAAAA,GAAWS,kBACXT,EAAAA,GAAWU,yBACXV,EAAAA,GAAWW,kBACXX,EAAAA,GAAWa,oCAEb,YAQX1I,IAAW1H,EAAAA,EAAAA,KAACiJ,EAAAA,IAAW,KACtBvB,IACAjG,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CACN6F,EAAQN,OAAS,IAChBzF,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACP3B,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIpD,GAAI,CAAEoO,aAAc,IAAK5O,UAC1C3B,EAAAA,EAAAA,KAACoP,EAAAA,EAAe,CACdE,OAAQ,CAACC,EAAAA,GAAWiB,kBACpBnB,SAAUxB,EAAAA,GACV6B,WAAY,CAAEC,UAAU,GAAOhO,UAE/B3B,EAAAA,EAAAA,KAACqJ,EAAAA,IAAS,CACRmD,YAAad,EACbpC,QAAS,CACP,CAAEtH,MAAO,aAAcuH,WAAY,cAErCC,SACEyE,GAAkBE,EAtNhB1E,IACxB,MAAQE,QAAQ,MAAE1H,EAAQ,GAAE,QAAE2H,GAAU,GAAU,CAAC,GAAMH,EAEzD,IAAII,EAAqB,IAAI4D,GAY7B,OAVI7D,EAEFC,EAASC,KAAK7H,GAGd4H,EAAWA,EAASlC,QAAQzD,GAAYA,IAAYjC,IAGtDyL,EAAgB7D,GAETA,CAAQ,OAyMW1D,EAEN6D,cAAeyD,EACflN,UAAWmH,EACXF,QAASoB,EACTqB,WAAW,QACXC,QAAQ,mBAIdlK,EAAAA,EAAAA,KAACyQ,EAAAA,IAAO,CACNvQ,MAAO,QACPwQ,eAAe1Q,EAAAA,EAAAA,KAAC2Q,EAAAA,IAAS,IACzBC,MACEnP,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,qQAMR3B,EAAAA,EAAAA,KAAA,SAAM,6HAINA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,6FAGNA,EAAAA,EAAAA,KAAA,SAAM,8PAMNA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,+KAKNA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,4BACoB,KAC1BA,EAAAA,EAAAA,KAAA,KACE6Q,KAAK,6HACLlH,OAAO,SACPmH,IAAI,WAAUnP,SACf,kBAEG,YAOM,IAAnB6F,EAAQN,SACPlH,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACC,WAAS,EAAA1D,UACb3B,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,EAAE5D,UACf3B,EAAAA,EAAAA,KAACyQ,EAAAA,IAAO,CACNvQ,MAAO,QACPwQ,eAAe1Q,EAAAA,EAAAA,KAAC2Q,EAAAA,IAAS,IACzBC,MACEnP,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,qQAOR3B,EAAAA,EAAAA,KAAA,SAAM,6HAINA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,6FAGNA,EAAAA,EAAAA,KAAA,SAAM,8PAMNA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,+KAKNyB,EAAAA,EAAAA,MAAC2N,EAAAA,EAAe,CACdE,OAAQ,CACNC,EAAAA,GAAWS,kBACXT,EAAAA,GAAWU,yBACXV,EAAAA,GAAWW,mBAEbT,UAAQ,EACRJ,SAAUxB,EAAAA,GAAoBlM,SAAA,EAE9B3B,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,kBACU,KAChBA,EAAAA,EAAAA,KAAC+Q,EAAAA,IAAU,CACTlO,QAASA,KACPyH,EAAS,GAADvH,OAAI8I,EAAAA,GAAUyE,UAAW,EACjC3O,SACH,kBAEY,0BAa1B,E,0BC1af,MAmJA,EAnJyBpC,IAIa,IAJZ,qBACxBmP,EAAoB,aACpBsC,EAAY,KACZpM,GAC8BrF,EAC9B,MAAMI,GAAWC,EAAAA,EAAAA,OACVqR,EAAYC,IAAiBnR,EAAAA,EAAAA,WAAkB,IAC/CkG,EAAWkL,IAAgBpR,EAAAA,EAAAA,UAAiB,KAC5CmG,EAAWkL,IAAgBrR,EAAAA,EAAAA,UAAiB,KAC5CsR,EAASC,IAAcvR,EAAAA,EAAAA,WAAkB,IACzC0M,EAAgBC,IAAqB3M,EAAAA,EAAAA,UAAmB,IAEzDwR,GAAqBpJ,EAAAA,EAAAA,cAAY,KACrC,IAAK6I,EACH,OAAO,KAGTtQ,EAAAA,EACGkM,OAAO,MAAM,gBAAD7J,OAAkBgJ,mBAAmBiF,KACjDnQ,MAAMK,IACLgQ,GAAc,GACdC,EAAajQ,EAAI+E,WACjByG,EAAkBxL,EAAIsQ,UAAY,IAClCF,EAA0B,YAAfpQ,EAAIuQ,OAAqB,IAErC1Q,OAAOE,IACNiQ,GAAc,GACdvR,GAAS+I,EAAAA,EAAAA,IAA0BzH,GAAK,GACxC,GACH,CAAC+P,EAAcrR,KAElBgJ,EAAAA,EAAAA,YAAU,KACa,OAAjBqI,GACFG,EAAa,IACbC,EAAa,IACb1E,EAAkB,KAElB6E,GACF,GACC,CAACP,EAAcO,IAElB,MAiDMG,EACiB,KAArBzL,EAAU0L,SACa,KAArBzL,EAAUyL,QAAkC,OAAjBX,GACV,OAAjBA,GACJ,OACEhR,EAAAA,EAAAA,KAACiF,EAAAA,EAAY,CACX1D,QAASA,KACPmN,GAAsB,EAExBxJ,UAAWN,EACX1E,MAAO,aACPG,WAAWL,EAAAA,EAAAA,KAAC4R,EAAAA,GAAqB,IAAIjQ,UAErC3B,EAAAA,EAAAA,KAAC0B,EAAAA,SAAQ,CAAAC,UACPF,EAAAA,EAAAA,MAAA,QACEoQ,YAAU,EACVC,aAAa,MACbC,SAAWtI,IACEA,EAlEbuI,iBAEFf,IAGJC,GAAc,GACO,OAAjBF,EACFtQ,EAAAA,EACGkM,OAAO,MAAM,gBAAD7J,OAAkBgJ,mBAAmBiF,IAAiB,CACjES,OAAQJ,EAAU,UAAY,WAC9BxE,OAAQJ,IAET5L,MAAMC,IACLoQ,GAAc,GACdxC,GAAsB,IAEvB3N,OAAOE,IACNiQ,GAAc,GACdvR,GAAS+I,EAAAA,EAAAA,IAA0BzH,GAAK,IAG5CP,EAAAA,EACGkM,OAAO,OAAQ,gBAAiB,CAC/B3G,YACAC,YACA2G,OAAQJ,IAET5L,MAAMC,IACLoQ,GAAc,GACdxC,GAAsB,IAEvB3N,OAAOE,IACNiQ,GAAc,GACdvR,GAAS+I,EAAAA,EAAAA,IAA0BzH,GAAK,IAiCzB,EACbU,SAAA,EAEF3B,EAAAA,EAAAA,KAACiS,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMxQ,UACtD3B,EAAAA,EAAAA,KAACoS,EAAAA,EAAe,CACd3F,eAAgBA,EAChBC,kBAAoB7C,IAClB6C,EAAkB7C,EAAS,OAIjCpI,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CAACC,GAAImE,EAAAA,GAAgBC,eAAe5E,SAAA,EACtC3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,2BACJgJ,KAAK,SACL/I,QAAQ,UACRC,QA5CMwP,KACK,OAAjBrB,GAIJG,EAAa,IACbC,EAAa,IACb1E,EAAkB,KALhBA,EAAkB,GAKC,EAsCX1K,MAAO,WAGThC,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,mBACJgJ,KAAK,SACL/I,QAAQ,aACR+M,SAAUsB,IAAeS,EACzB1P,MAAO,YAGViP,IACCjR,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAG5D,UAChB3B,EAAAA,EAAAA,KAACiJ,EAAAA,IAAW,YAKP,E,qCC5InB,MA6FA,EA7FwB1J,IAKM,IALL,qBACvBmP,EAAoB,aACpBsC,EAAY,gBACZnJ,EAAe,KACfjD,GACsBrF,EACtB,MAAMI,GAAWC,EAAAA,EAAAA,OAEV8H,EAAS2F,IAActN,EAAAA,EAAAA,WAAkB,IACzCuS,EAAcC,IAAmBxS,EAAAA,EAAAA,UAAmB,IAErDyS,GAAgB1K,EAAAA,EAAAA,KACnBC,GAAoBA,EAAMC,WAAWC,mBAyCxC,OAXAU,EAAAA,EAAAA,YAAU,KACR,GAAI/D,EAAM,CACR,MAAM6N,EAAuB5K,EAAgBhC,KAAK6M,GACzCA,EAAIC,SAEbJ,EAAgBE,GAChB9S,GAASoK,EAAAA,EAAAA,IAAoB0I,GAC/B,IAEC,CAAC7N,EAAMoM,KAGRvP,EAAAA,EAAAA,MAACwD,EAAAA,EAAY,CACX1D,QAASA,KACPmN,GAAsB,EAExBxJ,UAAWN,EACX1E,MAAM,eACNG,WAAWL,EAAAA,EAAAA,KAAC4S,EAAAA,IAAe,IAAIjR,SAAA,EAE/B3B,EAAAA,EAAAA,KAACiS,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMxQ,UACtD3B,EAAAA,EAAAA,KAAC6S,EAAAA,EAAe,CAACC,eAAgBN,OAEnC/Q,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CAACC,GAAImE,EAAAA,GAAgBC,eAAe5E,SAAA,EACtC3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,sBACJgJ,KAAK,SACL/I,QAAQ,UACRc,MAAM,UACNb,QAjCekQ,KACrBpT,GAASoK,EAAAA,EAAAA,IAAoBuI,GAAc,EAiCrCtQ,MAAO,WAEThC,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,mBACJgJ,KAAK,SACL/I,QAAQ,aACRc,MAAM,UACNiM,SAAUjI,EACV7E,QAjEsBmQ,KAC5B,IACI/Q,EAAQ+O,EAEZ3D,GAAW,GAEX3M,EAAAA,EACGkM,OAAO,MAAM,qBAAuB,CACnC9D,KAAM0J,EACNvI,WAAYhI,EACZgR,WATS,SAWVpS,MAAK,KACJwM,GAAW,GACX1N,GAASoK,EAAAA,EAAAA,IAAoB,KAC7B2E,GAAsB,IAEvB3N,OAAOE,IACNoM,GAAW,GACX1N,GAAS+I,EAAAA,EAAAA,IAA0BzH,GAAK,GACxC,EA8CEe,MAAO,YAGV0F,IACC1H,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAG5D,UAChB3B,EAAAA,EAAAA,KAACiJ,EAAAA,IAAW,QAGH,E,sECnFnB,MAuNA,EAvNiC1J,IAGC,IAHA,KAChCkM,EAAI,UACJyH,GAC0B3T,EAC1B,MAAMI,GAAWC,EAAAA,EAAAA,MACX0K,GAAWC,EAAAA,EAAAA,OAEV/C,EAASC,IAAc1H,EAAAA,EAAAA,UAA0B,KACjD2H,EAAS2F,IAActN,EAAAA,EAAAA,WAAkB,IACzCN,EAAY6N,IAAiBvN,EAAAA,EAAAA,WAAkB,IAC/CL,EAAwByT,IAA6BpT,EAAAA,EAAAA,UAE1D,OACKqT,EAAoBC,IAAyBtT,EAAAA,EAAAA,WAAkB,IAC/D4E,EAAmB2O,IACxBvT,EAAAA,EAAAA,UAAmC,OAC9BwT,EAAaC,IAAkBzT,EAAAA,EAAAA,UAAmB,KAClD0T,EAAoBC,IAAyB3T,EAAAA,EAAAA,WAAkB,IAC/D4T,EAAUC,IAAe7T,EAAAA,EAAAA,WAAkB,IAElD4I,EAAAA,EAAAA,YAAU,KACRkL,GAAc,GACb,KAEHlL,EAAAA,EAAAA,YAAU,KACJjB,GACFhH,EAAAA,EACGkM,OACC,MAAM,gBAAD7J,OACWgJ,mBAAmBN,GAAK,sBAEzC5K,MAAMK,IACLmM,GAAW,GACX,MAAMyG,EAAa5S,EAAIsH,KAAK6F,EAAAA,IAC5B5G,EAAWqM,EAAW,IAEvB/S,OAAOE,IACNtB,GAASyB,EAAAA,EAAAA,IAAqBH,IAC9BoM,GAAW,EAAM,GAEvB,GACC,CAAC3F,EAAS2F,EAAY5F,EAAYgE,EAAM9L,IAE3C,MAAMkU,EAAeA,KACnBxG,GAAW,EAAK,EAyBZ0G,EAAiBrU,IACrByT,EAA0BzT,GAC1BkU,GAAY,EAAK,EAablI,EAAe,CACnB,CACEC,KAAM,OACN9I,QAAUZ,IACJA,GACF8R,EAAc9R,EAAMgE,UACtB,GAGJ,CACE0F,KAAM,SACN9I,QAAUZ,IACJA,GAtB2BvC,KACnCyT,EAA0BzT,GAC1B4N,GAAc,EAAK,EAqBb0G,CAA4B/R,EAAMgE,UACpC,GAGJ,CACE0F,KAAM,OACN9I,QAAUZ,IACJA,GACF8R,EAAc9R,EAAMgE,UACtB,IAUN,OALA0C,EAAAA,EAAAA,YAAU,KACRhJ,GAAS6O,EAAAA,EAAAA,IAAY,yBAAyB,GAG7C,KAED/M,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CACNlC,IACCO,EAAAA,EAAAA,KAACiU,EAAAA,QAAoB,CACnBxU,WAAYA,EACZC,uBAAwBA,EACxBF,2BAA6BiP,IA3EDA,KAClCnB,GAAc,GAEVmB,GACFoF,GACF,EAuEQrU,CAA2BiP,EAAQ,IAIxCgF,IACCzT,EAAAA,EAAAA,KAACkU,EAAAA,EAA6B,CAC5BzU,WAAYgU,EACZF,YAAaA,EACb/T,2BA5EoCiP,IAC1CiF,GAAsB,GAClBjF,IACF9O,GAASwU,EAAAA,EAAAA,IAAmB,sCAC5BX,EAAe,IACfnG,GAAW,GACb,IAyEG+F,IACCpT,EAAAA,EAAAA,KAACoU,EAAAA,EAAiB,CAChBzP,kBAAmBA,EACnBC,KAAMwO,EACNvO,WAAYA,KAzElBwO,GAAsB,GACtBC,EAAqB,KAyEU,EAEzBxO,OAAO,eAGV6O,IACC3T,EAAAA,EAAAA,KAACqU,EAAAA,EAAkB,CACjBzP,KAAM+O,EACNW,kBAAmB5U,EACnBgP,qBArEiB6F,KACvBX,GAAY,GACZvG,GAAW,EAAK,KAuEdrN,EAAAA,EAAAA,KAACwU,EAAAA,IAAY,CACXC,WAAS,EACTtS,GAAI,CAAEoO,aAAc,IACpBvB,SACEvN,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CAACC,GAAI,CAAE2B,QAAS,OAAQ4Q,eAAgB,WAAYC,IAAK,IAAKhT,SAAA,EAChE3B,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CAACC,QAAS,kBAAkB9E,UACzC3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,kBACJE,QAASA,KACP6Q,GAAsB,EAAK,EAE7B1R,MAAO,kBACPoB,MAAMpD,EAAAA,EAAAA,KAAC6P,EAAAA,IAAU,IACjBF,SAAiC,IAAvB4D,EAAYrM,OACtBtE,QAAS,iBAGb5C,EAAAA,EAAAA,KAACoP,EAAAA,EAAe,CACdE,OAAQ,CACNC,EAAAA,GAAWqF,4BACXrF,EAAAA,GAAWsF,4BACXtF,EAAAA,GAAWuF,4BACXvF,EAAAA,GAAWwF,4BAEb1F,SAAUxB,EAAAA,GACV4B,UAAQ,EACRC,WAAY,CAAEC,UAAU,GAAOhO,UAE/B3B,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CAACC,QAAS,oBAAoB9E,UAC3C3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,yBACJX,MAAO,oBACPY,QAAQ,aACRQ,MAAMpD,EAAAA,EAAAA,KAACqQ,EAAAA,IAAO,IACdxN,QAASA,KACPyH,EAAS,+BAADvH,OACyBgJ,mBAAmBN,IACnD,EAEHkE,UAAWuD,WAKpBvR,SACF,iBAID3B,EAAAA,EAAAA,KAACqJ,EAAAA,IAAS,CACRmD,YAAad,EACbzB,WAAY,cACZX,QAAS0L,EAAAA,EACTxL,SAAWC,IAAMwL,EAAAA,EAAAA,IAAUxL,EAAG+J,EAAgBD,GAC9CvJ,cAAeuJ,EACfhT,UAAWmH,EACXF,QAASA,EACT0C,QAAQ,gBAED,E,0BCzNf,MA0HA,EA1H2B3K,IAIM,IAJL,KAC1BqF,EAAI,SACJoH,EAAQ,WACRnH,GACyBtF,EACzB,MAAMI,GAAWC,EAAAA,EAAAA,OACVsV,EAAaC,IAAkBpV,EAAAA,EAAAA,UAAiB,KAChDqV,EAAeC,IAAoBtV,EAAAA,EAAAA,UAAiB,KACpD2H,EAAS2F,IAActN,EAAAA,EAAAA,WAAkB,GAgDhD,OAAO6E,GACL5E,EAAAA,EAAAA,KAACiF,EAAAA,EAAY,CACX/E,MAAM,uBACNgF,UAAWN,EACXrD,QAASA,KACP4T,EAAe,IACfE,EAAiB,IACjBxQ,GAAY,EAEdxE,WAAWL,EAAAA,EAAAA,KAACsV,EAAAA,IAAkB,IAAI3T,UAElC3B,EAAAA,EAAAA,KAAA,QACE6R,YAAU,EACVC,aAAa,MACbC,SAAWtI,IA5DW8L,KAG1B,GAFAA,EAAMvD,iBAEFtK,EACF,OAIF,GAFA2F,GAAW,GAEP6H,EAAYhO,OAAS,EAQvB,OAPAvH,GACE+I,EAAAA,EAAAA,IAA0B,CACxBwD,aAAc,+CACdC,cAAe,WAGnBkB,GAAW,GAIb,IAAImI,EAAqC,CACvCxE,aAAchF,EACdyJ,aAAcP,GAGhBxU,EAAAA,EAAIgV,QACDC,mBAAmBH,GACnB3U,MAAMK,IACLmM,GAAW,GACX8H,EAAe,IACfE,EAAiB,IACjB1V,GACEwU,EAAAA,EAAAA,IAAmB,kDAADpR,OACkCiJ,EAAQ,OAG9DnH,GAAY,IAEb9D,OAAMC,UACLqM,GAAW,GACX8H,EAAe,IACfE,EAAiB,IACjB,MAAMpU,QAAaC,EAAIC,OACvBxB,GAASyB,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,IAAM,GACnD,EAkBE0U,CAAmBlM,EAAE,EACrB9H,UAEFF,EAAAA,EAAAA,MAACwQ,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMxQ,SAAA,EACtDF,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CAACC,GAAI,CAAE0B,OAAQ,eAAgBlC,SAAA,CAAC,yBACb3B,EAAAA,EAAAA,KAAA,UAAA2B,SAASqK,QAEhChM,EAAAA,EAAAA,KAAC4V,EAAAA,IAAQ,CACPjT,GAAG,eACHmG,KAAK,eACLM,SAAWmM,IACTJ,EAAeI,EAAM5L,OAAO1H,MAAM,EAEpCD,MAAM,eACN2J,KAAK,WACL1J,MAAOiT,KAETlV,EAAAA,EAAAA,KAAC4V,EAAAA,IAAQ,CACPjT,GAAG,kBACHmG,KAAK,kBACLM,SAAWmM,IACTF,EAAiBE,EAAM5L,OAAO1H,MAAM,EAEtCD,MAAM,0BACN2J,KAAK,WACL1J,MAAOmT,KAETpV,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CAACC,GAAImE,EAAAA,GAAgBC,eAAe5E,UACtC3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,qBACJgJ,KAAK,SACL/I,QAAQ,aACRc,MAAM,UACNiM,SACEjI,KACE0N,EAAclO,OAAS,GAAKgO,IAAgBE,GAEhDpT,MAAO,WAGV0F,IACC1H,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CAAAP,UACF3B,EAAAA,EAAAA,KAACiJ,EAAAA,IAAW,aAMpB,IAAI,E,eC9FV,MAocA,EApcoB4M,KAClB,MAAMlW,GAAWC,EAAAA,EAAAA,MACXkW,GAASC,EAAAA,EAAAA,KACTzL,GAAWC,EAAAA,EAAAA,OAEV7C,EAAS2F,IAActN,EAAAA,EAAAA,WAAkB,IACzCwN,EAAcC,IAAmBzN,EAAAA,EAAAA,WAAkB,IACnDiW,EAAYC,IAAiBlW,EAAAA,EAAAA,WAAkB,IAC/CkR,EAAYC,IAAiBnR,EAAAA,EAAAA,WAAkB,IAC/CsR,EAASC,IAAcvR,EAAAA,EAAAA,WAAkB,IACzC0M,EAAgBC,IAAqB3M,EAAAA,EAAAA,UAAmB,KACxDmW,EAAeC,IAAoBpW,EAAAA,EAAAA,UAAuB,KAC1D8H,EAAiBuO,IAAsBrW,EAAAA,EAAAA,UAAwB,KAC/DsW,EAA6BC,IAClCvW,EAAAA,EAAAA,WAAkB,IACbN,EAAY6N,IAAiBvN,EAAAA,EAAAA,WAAkB,IAC/CmT,EAAWqD,IAAgBxW,EAAAA,EAAAA,WAAkB,IAC7CyW,EAAaC,IAAkB1W,EAAAA,EAAAA,UAAiB,UAEjD2W,GACJ9I,EAAAA,EAAAA,GAAcC,EAAAA,GAAqB8I,EAAAA,MAA2BtF,EAC1DuF,GACJhJ,EAAAA,EAAAA,GAAcC,EAAAA,GAAqBgJ,EAAAA,KAA2BxF,EAE1DrF,EAAW8J,EAAO9J,UAAY,GAU9BhB,EAAeC,aAAaC,QAAQ,iBAAmB,GACvD4L,GAAkBlJ,EAAAA,EAAAA,GACtBC,EAAAA,GACAkJ,EAAAA,IACA,GAEIC,GAAiBpJ,EAAAA,EAAAA,GACrBC,EAAAA,GACAoJ,EAAAA,IACA,GAGIC,GAAYtJ,EAAAA,EAAAA,GAAcC,EAAAA,GAAqBsJ,EAAAA,IAE/C5F,GAAqBpJ,EAAAA,EAAAA,cAAY,KACrC,GAAiB,KAAb6D,EACF,OAAO,KAETqB,GAAW,GACX3M,EAAAA,EACGkM,OAAO,MAAM,gBAAD7J,OAAkBgJ,mBAAmBC,KACjDnL,MAAMK,IACLgQ,GAAc,GACd,MAAMM,EAAWtQ,EAAIsQ,UAAY,GACjC9E,EAAkB8E,GAElB,MAAM0E,EAA8B1E,EAAS3L,KAAKuR,IACzC,CACLA,MAAOA,MAIXjB,EAAiBD,GACjB,MAAMrO,EAAiC3G,EAAIyR,OAAO9M,KAC/C8M,IACQ,CACLA,OAAQA,MAKd9K,EAAgBW,KAAK6O,EAAAA,IAErBjB,EAAmBvO,GACnByJ,EAA0B,YAAfpQ,EAAIuQ,QACf8E,EAAarV,EAAIgS,WACjB7F,GAAW,EAAM,IAElBtM,OAAOE,IACNiQ,GAAc,GACd7D,GAAW,GACX1N,GAAS+I,EAAAA,EAAAA,IAA0BzH,GAAK,GACxC,GACH,CAAC+K,EAAUrM,KAqBdgJ,EAAAA,EAAAA,YAAU,KACRhJ,GAAS6O,EAAAA,EAAAA,IAAY,uBAAuB,GAE3C,KAEH7F,EAAAA,EAAAA,YAAU,KACR4I,GAAoB,GACnB,CAACA,IAEJ,MAWM+F,EAAoB,CACxB,CACE3L,KAAM,OACN9I,QAPqBuU,IACvB9M,EAAS,GAADvH,OAAI8I,EAAAA,GAAU0L,OAAM,KAAAxU,OAAIgJ,mBAAmBqL,EAAMA,QAAS,EAOhE7I,sBAAuBA,KAAO2I,IAIlC,OACEzV,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CACN4L,IACCvN,EAAAA,EAAAA,KAACwX,EAAgB,CACf5S,KAAM2I,EACNyD,aAAchF,EACd0C,qBAAsBA,KACpBlB,GAAgB,GAChB+D,GAAoB,IAIzByE,IACChW,EAAAA,EAAAA,KAACyX,EAAe,CACd7S,KAAMoR,EACNhF,aAAchF,EACdnE,gBAAiBA,EACjB6G,qBAAsBA,KACpBuH,GAAc,GACd1E,GAAoB,IAIzB9R,IACCO,EAAAA,EAAAA,KAACgN,EAAAA,QAAU,CACTvN,WAAYA,EACZ4K,cAAe,CAAC2B,GAChBxM,2BAA6BiP,IA9CDA,KAClCnB,GAAc,GACVmB,GACF8C,GACF,EA2CQ/R,CAA2BiP,EAAQ,IAIxC4H,IACCrW,EAAAA,EAAAA,KAAC0X,EAAuB,CACtB9S,KAAMyR,EACNrK,SAAUA,EACVnH,WAAYA,IAAMyR,GAA+B,MAGrDtW,EAAAA,EAAAA,KAAC+O,EAAAA,EAAiB,CAChB/M,OACEhC,EAAAA,EAAAA,KAAC0B,EAAAA,SAAQ,CAAAC,UACP3B,EAAAA,EAAAA,KAAC2X,EAAAA,IAAQ,CACP3V,MAAO,QACPa,QAASA,IAAMyH,EAASuB,EAAAA,GAAUC,WAIxCkD,SAAShP,EAAAA,EAAAA,KAACiP,EAAAA,EAAQ,OAEpBjP,EAAAA,EAAAA,KAACkP,EAAAA,IAAU,CAAAvN,UACTF,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACC,WAAS,EAAA1D,SAAA,EACb3B,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAG5D,UAChB3B,EAAAA,EAAAA,KAAC4X,EAAAA,IAAW,CACVxU,MAAMpD,EAAAA,EAAAA,KAAC2Q,EAAAA,IAAS,CAAC1N,MAAO,KACxB/C,MAAO8L,EACP6L,SAAU,GACV7I,SACEvN,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACP3B,EAAAA,EAAAA,KAAA,QACE4B,MAAO,CACLgC,SAAU,QACVZ,YAAa,SACbrB,SACH,kBAGD3B,EAAAA,EAAAA,KAAA,QACE4B,MAAO,CACL8D,WAAY,OACZ9B,SAAU,QACVZ,YAAa,SACbrB,SAED0P,EAAU,UAAY,cAEzBrR,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CACbC,QACEiQ,GAAiBE,EACb,IACAhJ,EAAAA,EAAAA,GACIC,EAAAA,GACA8I,EAAAA,KAEF/G,EAAAA,EAAAA,IACEiH,EAAAA,GACA,kBAEFjJ,EAAAA,EAAAA,GACIC,EAAAA,GACAgJ,EAAAA,KAEFjH,EAAAA,EAAAA,IACE+G,EAAAA,GACA,iBAEF/G,EAAAA,EAAAA,IACEkI,EAAAA,GACA,2BAEXnW,UAED3B,EAAAA,EAAAA,KAAC+X,EAAAA,IAAM,CACLC,gBAAiB,CAAC,UAAW,YAC7BpO,QAASyH,EACTpP,MAAO,gBACPU,GAAG,eACHmG,KAAK,eACLM,SAAUA,KA3JV6O,MA4JE3G,GAAYD,GA5Jd4G,GA6Jc5G,EA5J5BJ,IAGJC,GAAc,GACdxQ,EAAAA,EACGkM,OAAO,MAAM,gBAAD7J,OAAkBgJ,mBAAmBC,IAAa,CAC7DyF,OAAQwG,EAAY,UAAY,WAChCpL,OAAQJ,IAET5L,MAAMC,IACLoQ,GAAc,EAAM,IAErBnQ,OAAOE,IACNiQ,GAAc,GACdvR,GAAS+I,EAAAA,EAAAA,IAA0BzH,GAAK,IA8IJ,EAEtBiX,YAAU,EACVvI,UAAW+G,IAAkBE,OAGjC5W,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CACbC,SACEmH,EAAAA,EAAAA,GAAcC,EAAAA,GAAqBO,EAAAA,IAC/BpD,IAAiBgB,EACf,iDACA,eACF4D,EAAAA,EAAAA,IACExB,EAAAA,GACA,eAEPzM,UAED3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,cACJE,QA5ODsL,KACjBb,GAAc,EAAK,EA4ODlK,MAAMpD,EAAAA,EAAAA,KAACmY,EAAAA,IAAS,IAChBvV,QAAS,YACT+M,WACG/B,EAAAA,EAAAA,GACCC,EAAAA,GACAO,EAAAA,KACGpD,IAAiBgB,OAK5BhM,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CAACC,QAAS,kBAAkB9E,UACzC3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,uBACJE,QA/PO8S,KACzBW,GAA+B,EAAK,EA+PlBlT,MAAMpD,EAAAA,EAAAA,KAACoY,EAAAA,IAAe,IACtBxV,QAAS,UACT+M,SAAU3E,IAAiBgB,SAKnC7J,GAAI,CAAEoO,aAAc,SAIxBvQ,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAG5D,UAChB3B,EAAAA,EAAAA,KAACqY,EAAAA,IAAI,CACHC,iBAAkB9B,EAClB+B,WAAY9B,EACZ+B,QAAS,CACP,CACEC,UAAW,CACT9V,GAAI,SACJX,MAAO,SACP2N,UAAWqH,GAEb0B,SACEjX,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACP3B,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CACFyW,YAAaA,IACXhZ,GAAS6O,EAAAA,EAAAA,IAAY,wBACtB7M,UAED3B,EAAAA,EAAAA,KAACwU,EAAAA,IAAY,CACXC,WAAS,EACTtS,GAAI,CAAEoO,aAAc,IACpBvB,SACEhP,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CACbC,QACEuQ,EACI,iBACApH,EAAAA,EAAAA,IACEqH,EAAAA,GACA,uBAEPtV,UAED3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,aACJX,MAAO,gBACPa,QAASA,KACP2K,GAAgB,EAAK,EAEvBpK,MAAMpD,EAAAA,EAAAA,KAACqQ,EAAAA,IAAO,IACdzN,QAAS,aACT+M,UAAWqH,MAGhBrV,SACF,cAIH3B,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CACHE,MAAI,EACJC,GAAI,GACJoT,YAAaA,IACXhZ,GAAS6O,EAAAA,EAAAA,IAAY,wBACtB7M,UAED3B,EAAAA,EAAAA,KAACqJ,EAAAA,IAAS,CACRmD,YAAa8K,EACbhO,QAAS,CAAC,CAAEtH,MAAO,OAAQuH,WAAY,UACvChJ,UAAWmH,EACXF,QAAS0O,EACTjM,WAAW,SACXC,QAAQ,gBAMlB,CACEuO,UAAW,CACT9V,GAAI,mBACJX,MAAO,mBACP2N,WAAW/B,EAAAA,EAAAA,GACTC,EAAAA,GACA+K,EAAAA,KAGJF,SACE1Y,EAAAA,EAAAA,KAAC6Y,EAAwB,CACvBpN,KAAMO,EACNkH,UAAWA,KAIjB,CACEuF,UAAW,CACT9V,GAAI,WACJX,MAAO,WACP2N,UAAWmH,GAEb4B,SACEjX,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACP3B,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CACFyW,YAAaA,IACXhZ,GAAS6O,EAAAA,EAAAA,IAAY,0BACtB7M,UAED3B,EAAAA,EAAAA,KAACwU,EAAAA,IAAY,CACXC,WAAS,EACTtS,GAAI,CAAEoO,aAAc,IACpBvB,SACEhP,EAAAA,EAAAA,KAACwG,EAAAA,EAAc,CACbC,QACEqQ,EACI,mBACAlH,EAAAA,EAAAA,IACEmH,EAAAA,GACA,mBAEPpV,UAED3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,kBACJX,MAAO,kBACPa,QAASA,KACPoT,GAAc,EAAK,EAErB7S,MAAMpD,EAAAA,EAAAA,KAAC4S,EAAAA,IAAe,IACtBhQ,QAAS,aACT+M,UAAWmH,MAGhBnV,SACF,gBAIH3B,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CAAAP,UACF3B,EAAAA,EAAAA,KAACqJ,EAAAA,IAAS,CACRmD,YAAa,CACX,CACEb,KAAM,OACN9I,QAAU8P,IACRrI,EAAS,GAADvH,OACH8I,EAAAA,GAAUiN,SAAQ,KAAA/V,OAAIgJ,mBACvB4G,EAAOA,SAEV,IAIPrJ,QAAS,CAAC,CAAEtH,MAAO,OAAQuH,WAAY,WACvChJ,UAAWmH,EACXF,QAASK,EACToC,WAAW,WACXC,QAAQ,6BAWnB,E,eC3ef,MAAM6O,EAAcxZ,IAMb,IANc,KACnB6D,EAAI,YACJ4V,GAIDzZ,EACC,OACEkC,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CACFC,GAAI,CACF2B,QAAS,OACT,cAAe,CACbd,YAAa,OACbE,OAAQ,OACRD,MAAO,OACPsN,aAAc,SAEhB5O,SAAA,CAEDyB,EAAM,KACPpD,EAAAA,EAAAA,KAAA,OAAK4B,MAAO,CAAEgC,SAAU,OAAQqV,UAAW,SAAUvV,MAAO,WAAY/B,SACrEqX,MAEC,EAgEV,EA7DuBE,KAEnBzX,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CACFC,GAAI,CACFgX,KAAM,EACNC,OAAQ,oBACRC,aAAc,MACdvV,QAAS,OACTwV,SAAU,SACVnW,QAAS,OACTf,UAAW,GACXT,SAAA,EAEFF,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CACFC,GAAI,CACFyB,SAAU,OACV8B,WAAY,IACZ5B,QAAS,OACTC,WAAY,SACZwM,aAAc,OAEd,cAAe,CACbrN,OAAQ,OACRD,MAAO,OACPD,YAAa,SAEfrB,SAAA,EAEF3B,EAAAA,EAAAA,KAACuZ,EAAAA,IAAc,KACfvZ,EAAAA,EAAAA,KAAA,OAAA2B,SAAK,2CAEPF,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CAACC,GAAI,CAAEyB,SAAU,OAAQ2M,aAAc,QAAS5O,SAAA,CAAC,qQAKnD3B,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,iNAINA,EAAAA,EAAAA,KAAA,aAGFyB,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CACFC,GAAI,CACF2B,QAAS,OACTwV,SAAU,UACV3X,SAAA,EAEF3B,EAAAA,EAAAA,KAAC+Y,EAAW,CAAC3V,MAAMpD,EAAAA,EAAAA,KAAC2Q,EAAAA,IAAS,IAAKqI,YAAW,kBAC7ChZ,EAAAA,EAAAA,KAAC+Y,EAAW,CAAC3V,MAAMpD,EAAAA,EAAAA,KAAC+P,EAAAA,IAAU,IAAKiJ,YAAW,mBAC9ChZ,EAAAA,EAAAA,KAAC+Y,EAAW,CACV3V,MAAMpD,EAAAA,EAAAA,KAACwZ,EAAAA,IAAsB,IAC7BR,YAAW,0BCnErB,EAhBqBS,KACnB,MAAM9Z,GAAWC,EAAAA,EAAAA,MACXoM,GAAWlE,EAAAA,EAAAA,KAAaC,GAAoBA,EAAMC,WAAWgE,WACnE,OACEhM,EAAAA,EAAAA,KAAC4V,EAAAA,IAAQ,CACPjT,GAAG,kBACHmG,KAAK,kBACL9G,MAAM,YACNC,MAAO+J,EACP0N,WAAW,EACXtQ,SAAWK,IACT9J,GAASga,EAAAA,EAAAA,IAAYlQ,EAAEE,OAAO1H,OAAO,GAEvC,ECON,EApByB2X,KACvB,MAAMja,GAAWC,EAAAA,EAAAA,MACXsG,GAAY4B,EAAAA,EAAAA,KACfC,GAAoBA,EAAMC,WAAW9B,YAGxC,OACElG,EAAAA,EAAAA,KAAC4V,EAAAA,IAAQ,CACPjT,GAAG,4BACHmG,KAAK,4BACL6C,KAAK,WACL3J,MAAM,WACNC,MAAOiE,EACPkD,SAAWK,IACT9J,GAASyR,EAAAA,EAAAA,IAAa3H,EAAEE,OAAO1H,OAAO,EAExC6P,aAAa,oBACb,EC0HN,EAlHgB+H,KACd,MAAMla,GAAWC,EAAAA,EAAAA,MACXqI,GAAmBH,EAAAA,EAAAA,KACtBC,GAAoBA,EAAMC,WAAWC,mBAElCwE,GAAiB3E,EAAAA,EAAAA,KACpBC,GAAoBA,EAAMC,WAAWyE,iBAElCwE,GAAanJ,EAAAA,EAAAA,KAChBC,GAAoBA,EAAMC,WAAWiJ,aAElCS,GAAc5J,EAAAA,EAAAA,KACjBC,GAAoBA,EAAMC,WAAW0J,cAElCoI,GAAkBhS,EAAAA,EAAAA,KACrBC,GAAoBA,EAAMC,WAAW8R,kBAElCxP,GAAWC,EAAAA,EAAAA,MACjB5K,GAASoa,EAAAA,EAAAA,OA4BT,OALApR,EAAAA,EAAAA,YAAU,KACRhJ,GAAS6O,EAAAA,EAAAA,IAAY,YAAY,GAEhC,KAGDxO,EAAAA,EAAAA,KAAC0B,EAAAA,SAAQ,CAAAC,UACPF,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAG5D,SAAA,EAChB3B,EAAAA,EAAAA,KAAC+O,EAAAA,EAAiB,CAChB/M,OACEhC,EAAAA,EAAAA,KAAC2X,EAAAA,IAAQ,CACP3V,MAAO,QACPa,QAASA,IAAMyH,EAASuB,EAAAA,GAAUC,SAGtCkD,SAAShP,EAAAA,EAAAA,KAACiP,EAAAA,EAAQ,OAEpBjP,EAAAA,EAAAA,KAACkP,EAAAA,IAAU,CAAAvN,UACT3B,EAAAA,EAAAA,KAACiS,EAAAA,IAAU,CACT/R,MAAO,cACPkD,MAAMpD,EAAAA,EAAAA,KAACga,EAAAA,IAAc,IACrBC,SAASja,EAAAA,EAAAA,KAACkZ,EAAc,IAAIvX,UAE5BF,EAAAA,EAAAA,MAAA,QACEoQ,YAAU,EACVC,aAAa,MACbC,SAAWtI,IA/CH8L,KAElB,GADAA,EAAMvD,iBACF8H,EAAkB,EAQpB,OAPAna,GACEyB,EAAAA,EAAAA,IAAqB,CACnB8K,aAAc,+CACdC,cAAe,WAGnBxM,GAASuR,EAAAA,EAAAA,KAAc,IAGrBD,IAGJtR,GAASuR,EAAAA,EAAAA,KAAc,IACvBvR,GAASua,EAAAA,EAAAA,MACNC,SACAtZ,MAAK,IAAMyJ,EAAS,GAADvH,OAAI8I,EAAAA,GAAUC,UAAS,EA8BjCsO,CAAW3Q,EAAE,EACb9H,SAAA,EAEF3B,EAAAA,EAAAA,KAACyZ,EAAY,KACbzZ,EAAAA,EAAAA,KAAC4Z,EAAgB,KACjB5Z,EAAAA,EAAAA,KAAC6S,EAAAA,EAAe,CAACC,eAAgB7K,KACjCjI,EAAAA,EAAAA,KAACoS,EAAAA,EAAe,CACd3F,eAAgBA,EAChBC,kBAAoB7C,IAClBlK,GAAS+M,EAAAA,EAAAA,IAAkB7C,GAAU,IAGxCoH,IACCjR,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAG5D,UAChB3B,EAAAA,EAAAA,KAACiJ,EAAAA,IAAW,OAIhBxH,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIpD,GAAImE,EAAAA,GAAgBC,eAAe5E,SAAA,EACpD3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,iBACJgJ,KAAK,SACL/I,QAAQ,UACRC,QAAU4G,IACR9J,GAAS0a,EAAAA,EAAAA,KAAiB,EAE5BrY,MAAO,WAGThC,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,YACJgJ,KAAK,SACL/I,QAAQ,aACRc,MAAM,UACNiM,SAAUsB,IAAeS,EACzB1P,MAAO,uBAOV,E,0BCrIf,MAAM+W,EAAcxZ,IAMb,IANc,KACnB6D,EAAI,YACJ4V,GAIDzZ,EACC,OACEkC,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CACFC,GAAI,CACF2B,QAAS,OACT,cAAe,CACbd,YAAa,OACbE,OAAQ,OACRD,MAAO,OACPsN,aAAc,SAEhB5O,SAAA,CAEDyB,EAAM,KACPpD,EAAAA,EAAAA,KAAA,OAAK4B,MAAO,CAAEgC,SAAU,OAAQqV,UAAW,SAAUvV,MAAO,WAAY/B,SACrEqX,MAEC,EA2FV,EAxFqCsB,KAEjC7Y,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CACFC,GAAI,CACFgX,KAAM,EACNC,OAAQ,oBACRC,aAAc,MACdvV,QAAS,OACTwV,SAAU,SACVnW,QAAS,OACTf,UAAW,GACXT,SAAA,EAEFF,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CACFC,GAAI,CACFyB,SAAU,OACV8B,WAAY,IACZ5B,QAAS,OACTC,WAAY,SACZwM,aAAc,OACdgK,cAAe,OAEf,cAAe,CACbrX,OAAQ,OACRD,MAAO,OACPD,YAAa,SAEfrB,SAAA,EAEF3B,EAAAA,EAAAA,KAACuZ,EAAAA,IAAc,KACfvZ,EAAAA,EAAAA,KAAA,OAAA2B,SAAK,qCAEPF,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CAACC,GAAI,CAAEyB,SAAU,OAAQ2M,aAAc,QAAS5O,SAAA,EAClDF,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CAACC,GAAI,CAAEoY,cAAe,QAAS5Y,SAAA,EACjC3B,EAAAA,EAAAA,KAAC+Y,EAAW,CACV3V,MAAMpD,EAAAA,EAAAA,KAACwa,EAAAA,IAAkB,IACzBxB,YAAW,wBAEbhZ,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CAACC,GAAI,CAAEsY,WAAY,QAAS9Y,SAAC,kKAMnCF,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CAACC,GAAI,CAAEoY,cAAe,QAAS5Y,SAAA,EACjC3B,EAAAA,EAAAA,KAAC+Y,EAAW,CACV3V,MAAMpD,EAAAA,EAAAA,KAACoY,EAAAA,IAAe,IACtBY,YAAW,+BAEbhZ,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CAACC,GAAI,CAAEsY,WAAY,QAAS9Y,SAAC,sRAOjC3B,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CAACC,GAAI,CAAEsY,WAAY,QAAS9Y,SAAC,4HAKnCF,EAAAA,EAAAA,MAACS,EAAAA,IAAG,CAACC,GAAI,CAAEoY,cAAe,QAAS5Y,SAAA,EACjC3B,EAAAA,EAAAA,KAAC+Y,EAAW,CACV3V,MAAMpD,EAAAA,EAAAA,KAAC4S,EAAAA,IAAe,IACtBoG,YAAW,4BAEbhZ,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CAACC,GAAI,CAAEsY,WAAY,QAAS9Y,SAAC,iRAOjC3B,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CAACC,GAAI,CAAEsY,WAAY,QAAS9Y,SAAC,8EAKrC3B,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CACFC,GAAI,CACF2B,QAAS,OACTwV,SAAU,e,eCnFpB,MA4SA,EA5S0BoB,KACxB,MAAM/a,GAAWC,EAAAA,EAAAA,MACXkW,GAASC,EAAAA,EAAAA,KACTzL,GAAWC,EAAAA,EAAAA,OAEVoQ,EAAYC,IAAiB7a,EAAAA,EAAAA,WAAkB,IAC/CkG,EAAWkL,IAAgBpR,EAAAA,EAAAA,WAAiB8a,EAAAA,EAAAA,IAAgB,MAC5D3U,EAAWkL,IAAgBrR,EAAAA,EAAAA,WAAiB8a,EAAAA,EAAAA,IAAgB,MAC5DC,EAAsBC,IAC3Bhb,EAAAA,EAAAA,WAAkB,IACb4E,EAAmB2O,IACxBvT,EAAAA,EAAAA,UAAmC,OAC9Bib,EAAYC,IAAiBlb,EAAAA,EAAAA,UAAiB,IAE/CiM,EAAW8J,EAAO9J,UAAY,IAE7BlD,EAAMoS,IAAWnb,EAAAA,EAAAA,UAAiB,KAClCiZ,EAAamC,IAAkBpb,EAAAA,EAAAA,UAAiB,KAChDqb,EAAUC,IAAetb,EAAAA,EAAAA,UAAiB,KAC1Cub,EAAQC,IAAaxb,EAAAA,EAAAA,aAE5B4I,EAAAA,EAAAA,YAAU,KACR,GAAIgS,EAAY,CACd,MAAMa,EAAWF,EAASA,EAAOG,WAAWC,cAAgB,KAC5Dhb,EAAAA,EACGkM,OACC,OAAO,gBAAD7J,OACUgJ,mBACdC,GACD,gCACD,CACE2G,OAAQqI,EACR/U,UAAWA,EACXC,UAAWA,EACX8S,YAAaA,EACb2C,QAASP,EACTtS,KAAMA,EACNwS,OAAQE,IAGX3a,MAAMK,IACL0Z,GAAc,GACdtH,EAAqB,CACnBrN,UAAW/E,EAAI+E,WAAa,GAC5BC,UAAWhF,EAAIgF,WAAa,GAC5BW,IAAK3F,EAAI2F,KAAO,IAChB,IAEH9F,OAAOE,IACN2Z,GAAc,GACdjb,GAASyB,EAAAA,EAAAA,IAAqBH,GAAK,GAEzC,IACC,CACD0Z,EACAC,EACAjb,EACAqb,EACAhP,EACA/F,EACAC,EACA4C,EACAkQ,EACAsC,EACAF,KAGFzS,EAAAA,EAAAA,YAAU,KACJmS,GACFpa,EAAAA,EACGkM,OAAO,MAAM,gBAAD7J,OAAkBgJ,mBAAmBC,GAAS,cAE1DnL,MAAMK,IACL+Z,EAAclU,KAAKC,UAAUD,KAAK6U,MAAM1a,EAAIyR,QAAS,KAAM,GAAG,IAE/D5R,OAAOE,KACNG,EAAAA,EAAAA,IAAqBH,EAAI,GAE/B,GACC,CAAC6Z,EAAsB9O,IAuB1B,OALArD,EAAAA,EAAAA,YAAU,KACRhJ,GAAS6O,EAAAA,EAAAA,IAAY,eAAe,GAEnC,KAGD/M,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CACNgD,IACC3E,EAAAA,EAAAA,KAACoU,EAAAA,EAAiB,CAChBzP,kBAAmBA,EACnBC,MAAI,EACJC,WAAYA,KAflByO,EAAqB,MACrBhJ,EAAS,GAADvH,OAAI8I,EAAAA,GAAUC,MAAK,KAAA/I,OAAIgJ,mBAAmBC,IAenB,EAEzBlH,OAAO,gBAGXrD,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAG5D,SAAA,EAChB3B,EAAAA,EAAAA,KAAC+O,EAAAA,EAAiB,CAChB/M,OACEhC,EAAAA,EAAAA,KAAC2X,EAAAA,IAAQ,CACP9U,QAASA,IACPyH,EAAS,GAADvH,OAAI8I,EAAAA,GAAUC,MAAK,KAAA/I,OAAIgJ,mBAAmBC,KAEpDhK,MAAO,kBAAoBgK,IAG/BgD,SAAShP,EAAAA,EAAAA,KAACiP,EAAAA,EAAQ,OAEpBjP,EAAAA,EAAAA,KAACkP,EAAAA,IAAU,CAAAvN,UACT3B,EAAAA,EAAAA,KAACiS,EAAAA,IAAU,CACTgI,SAASja,EAAAA,EAAAA,KAACsa,EAA4B,IACtClX,MAAMpD,EAAAA,EAAAA,KAACmF,EAAAA,IAA6B,IACpCjF,MAAK,yBAAA6C,OAA2BiJ,GAAWrK,UAE3CF,EAAAA,EAAAA,MAAA,QACEoQ,YAAU,EACVC,aAAa,MACbC,SAAWtI,IACTA,EAAEuI,iBAvDevI,KAC7BA,EAAEuI,iBACF4I,GAAc,EAAK,EAsDPiB,CAAsBpS,EAAE,EACxB9H,SAAA,EAEF3B,EAAAA,EAAAA,KAAC4V,EAAAA,IAAQ,CACP3T,MAAOgE,EACPjE,MAAO,aACPW,GAAI,YACJmG,KAAM,YACNK,YAAa,mBACbC,SAAWK,IACT0H,EAAa1H,EAAEE,OAAO1H,MAAM,EAE9B6Z,WAAW9b,EAAAA,EAAAA,KAACwa,EAAAA,IAAkB,OAEhCxa,EAAAA,EAAAA,KAAC4V,EAAAA,IAAQ,CACP3T,MAAOiE,EACPlE,MAAO,aACPW,GAAI,YACJmG,KAAM,YACN6C,KAAM,WACNxC,YAAa,mBACbC,SAAWK,IACT2H,EAAa3H,EAAEE,OAAO1H,MAAM,EAE9B6Z,WAAW9b,EAAAA,EAAAA,KAACoY,EAAAA,IAAe,OAG7BpY,EAAAA,EAAAA,KAAC+X,EAAAA,IAAM,CACL9V,MAAM,uBACNU,GAAG,uBACHmG,KAAK,uBACLc,QAASkR,EACT1R,SAAWmM,IACTwF,EAAwBxF,EAAM5L,OAAOC,QAAQ,EAE/C5H,MAAO,8BACPgX,YACE,gRAGH8B,IACCrZ,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAG5D,SAAA,EAChB3B,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CAAAP,UACF3B,EAAAA,EAAAA,KAAC+b,EAAAA,IAAO,CACNrD,SACE1Y,EAAAA,EAAAA,KAAC0B,EAAAA,SAAQ,CAAAC,UACP3B,EAAAA,EAAAA,KAAA,KACE2J,OAAO,QACPkH,KAAK,qJAAoJlP,SAC1J,uCAKLqa,UAAU,QAAOra,UAEjB3B,EAAAA,EAAAA,KAACic,EAAAA,EAAU,CAAAta,SAAC,uFAMhB3B,EAAAA,EAAAA,KAACoF,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIpD,GAAI,IAAKmE,EAAAA,GAAgB4V,gBAAiBva,UAC3D3B,EAAAA,EAAAA,KAACmc,EAAAA,EAAiB,CAChBla,MAAO+Y,EACP5R,SAAWnH,IACTgZ,EAAchZ,EAAM,EAEtBma,aAAc,QACdC,SACErc,EAAAA,EAAAA,KAAC0B,EAAAA,SAAQ,CAAAC,UACP3B,EAAAA,EAAAA,KAAA,KACE2J,OAAO,QACPkH,KAAK,qJAAoJlP,SAC1J,+CAUb3B,EAAAA,EAAAA,KAACkC,EAAAA,IAAG,CACFC,GAAI,CACFoO,aAAc,OACdnO,UAAW,OACXa,MAAO,OACP,UAAW,CAAEA,MAAO,UACpBtB,UAEF3B,EAAAA,EAAAA,KAACsc,EAAAA,IAAa,CACZC,iBAAe,EACfta,MAAOqZ,EACPlS,SAAWK,IACT8R,EAAU9R,EAAE,EAEd9G,GAAG,aACHX,MAAO,SACPwa,WAAY,MACZC,iBAAiB,OAIrBzc,EAAAA,EAAAA,KAAC4V,EAAAA,IAAQ,CACP3T,MAAO6G,EACP9G,MAAO,OACPW,GAAI,OACJmG,KAAM,OACN6C,KAAM,OACNxC,YAAa,eACbC,SAAWK,IACTyR,EAAQzR,EAAEE,OAAO1H,MAAM,KAG3BjC,EAAAA,EAAAA,KAAC4V,EAAAA,IAAQ,CACP3T,MAAO+W,EACPhX,MAAO,cACPW,GAAI,cACJmG,KAAM,cACN6C,KAAM,OACNxC,YAAa,sBACbC,SAAWK,IACT0R,EAAe1R,EAAEE,OAAO1H,MAAM,KAGlCjC,EAAAA,EAAAA,KAAC4V,EAAAA,IAAQ,CACP3T,MAAOmZ,EACPpZ,MAAO,WACPW,GAAI,UACJmG,KAAM,UACN6C,KAAM,OACNxC,YAAa,kBACbC,SAAWK,IACT4R,EAAY5R,EAAEE,OAAO1H,MAAM,KAG/BR,EAAAA,EAAAA,MAAC2D,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIpD,GAAI,IAAKmE,EAAAA,GAAgBC,gBAAiB5E,SAAA,EAC3D3B,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,QACJgJ,KAAK,SACL/I,QAAQ,UACRC,QAlMEwP,KAChBiB,EAAqB,MACrBnC,EAAa,IACbC,EAAa,GAAG,EAgMFpP,MAAO,WAGThC,EAAAA,EAAAA,KAAC0C,EAAAA,IAAM,CACLC,GAAI,YACJgJ,KAAK,SACL/I,QAAQ,aACRc,MAAM,UACN1B,MAAO,0BAOV,ECjTf,GAfc0a,KAEVjb,EAAAA,EAAAA,MAACkb,EAAAA,GAAM,CAAAhb,SAAA,EACL3B,EAAAA,EAAAA,KAAC4c,EAAAA,GAAK,CAAC9V,KAAM,WAAY5C,SAASlE,EAAAA,EAAAA,KAAC6c,EAAa,OAChD7c,EAAAA,EAAAA,KAAC4c,EAAAA,GAAK,CAAC9V,KAAM,YAAa5C,SAASlE,EAAAA,EAAAA,KAAC6V,EAAW,OAC/C7V,EAAAA,EAAAA,KAAC4c,EAAAA,GAAK,CACJ9V,KAAM,wBACN5C,SAASlE,EAAAA,EAAAA,KAAC8c,EAA2B,OAEvC9c,EAAAA,EAAAA,KAAC4c,EAAAA,GAAK,CAAC9V,KAAM,IAAK5C,SAASlE,EAAAA,EAAAA,KAACoN,EAAS,OACrCpN,EAAAA,EAAAA,KAAC4c,EAAAA,GAAK,CAAC1Y,SAASlE,EAAAA,EAAAA,KAAC+c,EAAAA,EAAY,Q","sources":["screens/Console/Account/DeleteServiceAccount.tsx","screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.tsx","screens/Console/Common/PanelTitle/PanelTitle.tsx","screens/Console/Policies/PolicySelectors.tsx","screens/Console/Users/DeleteUser.tsx","screens/Console/Users/GroupsSelectors.tsx","screens/Console/Users/ListUsers.tsx","screens/Console/Users/ChangeUserGroups.tsx","screens/Console/Users/SetUserPolicies.tsx","screens/Console/Users/UserServiceAccountsPanel.tsx","screens/Console/Account/ChangeUserPasswordModal.tsx","screens/Console/Users/UserDetails.tsx","screens/Console/Users/AddUserHelpBox.tsx","screens/Console/Users/UserSelector.tsx","screens/Console/Users/PasswordSelector.tsx","screens/Console/Users/AddUserScreen.tsx","screens/Console/Users/AddUserServiceAccountHelpBox.tsx","screens/Console/Users/AddUserServiceAccountScreen.tsx","screens/Console/Users/Users.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteServiceAccountProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedServiceAccount: string | null;\n}\n\nconst DeleteServiceAccount = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedServiceAccount,\n}: IDeleteServiceAccountProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedServiceAccount) {\n return null;\n }\n\n const onConfirmDelete = () => {\n setLoadingDelete(true);\n api.serviceAccounts\n .deleteServiceAccount(selectedServiceAccount)\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n };\n\n return (\n }\n isLoading={loadingDelete}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete Access Key{\" \"}\n \n {selectedServiceAccount}\n \n ?\n \n }\n />\n );\n};\n\nexport default DeleteServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, CopyIcon, InputLabel, ReadBox, Box } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface ICredentialsItem {\n label?: string;\n value?: string;\n}\n\nconst CredentialItem = ({ label = \"\", value = \"\" }: ICredentialsItem) => {\n const dispatch = useAppDispatch();\n\n return (\n \n {label}\n \n {\n dispatch(setModalSnackMessage(`${label} copied to clipboard`));\n }}\n style={{\n marginRight: \"5px\",\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n >\n {value}\n \n \n );\n};\n\nexport default CredentialItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport {\n Box,\n Button,\n DownloadIcon,\n ServiceAccountCredentialsIcon,\n WarnIcon,\n Grid,\n} from \"mds\";\nimport { NewServiceAccount } from \"./types\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport CredentialItem from \"./CredentialItem\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\nimport { modalStyleUtils } from \"../FormComponents/common/styleLibrary\";\n\nconst WarningBlock = styled.div(({ theme }) => ({\n color: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n}));\n\ninterface ICredentialsPromptProps {\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + text);\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n const downloadImport = () => {\n let consoleExtras = {};\n\n if (consoleCreds) {\n if (!Array.isArray(consoleCreds)) {\n consoleExtras = {\n url: consoleCreds.url,\n accessKey: consoleCreds.accessKey,\n secretKey: consoleCreds.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n } else {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n url: itemMap.url,\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n });\n consoleExtras = cCreds[0];\n }\n } else {\n consoleExtras = {\n url: newServiceAccount.url,\n accessKey: newServiceAccount.accessKey,\n secretKey: newServiceAccount.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n }\n\n download(\n \"credentials.json\",\n JSON.stringify({\n ...consoleExtras,\n }),\n );\n };\n\n const downloaddAllCredentials = () => {\n let allCredentials = {};\n if (\n consoleCreds &&\n Array.isArray(consoleCreds) &&\n consoleCreds.length > 1\n ) {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n accessKey: itemMap.accessKey,\n secretKey: itemMap.secretKey,\n };\n });\n allCredentials = cCreds;\n }\n download(\n \"all_credentials.json\",\n JSON.stringify({\n ...allCredentials,\n }),\n );\n };\n\n return (\n {\n closeModal();\n }}\n title={`New ${entity} Created`}\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n \n Console Credentials\n \n {Array.isArray(consoleCreds) &&\n consoleCreds.map((credentialsPair, index) => {\n return (\n \n \n \n \n );\n })}\n {!Array.isArray(consoleCreds) && (\n \n \n \n \n )}\n \n \n )}\n {(consoleCreds === null || consoleCreds === undefined) && (\n <>\n \n \n \n )}\n {idp ? (\n \n Please Login via the configured external identity provider.\n \n ) : (\n \n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n \n )}\n \n \n {!idp && (\n \n \n }\n variant=\"callAction\"\n />\n \n\n {Array.isArray(consoleCreds) && consoleCreds.length > 1 && (\n \n }\n variant=\"callAction\"\n color=\"primary\"\n />\n \n )}\n \n )}\n \n \n \n );\n};\n\nexport default CredentialsPrompt;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nconst PanelTitleContainer = styled.h1(() => ({\n padding: 0,\n margin: 0,\n fontSize: \".9rem\",\n}));\n\ninterface IPanelTitle {\n children: React.ReactNode;\n}\n\nconst PanelTitle = ({ children }: IPanelTitle) => {\n return {children};\n};\n\nexport default PanelTitle;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { ConfirmDeleteIcon, DataTable, InformativeMessage, Loader } from \"mds\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { UserServiceAccountItem } from \"../../../api/consoleApi\";\nimport { errorToHandler } from \"../../../api/errors\";\n\ninterface IDeleteUserProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedUsers: string[] | null;\n}\n\nconst DeleteUser = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedUsers,\n}: IDeleteUserProps) => {\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\n\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [loadingSA, setLoadingSA] = useState(true);\n const [hasSA, setHasSA] = useState(false);\n const [userSAList, setUserSAList] = useState([]);\n const [deleteLoading, setDeleteLoading] = useState(false);\n\n const userLoggedIn = localStorage.getItem(\"userLoggedIn\") || \"\";\n\n useEffect(() => {\n if (selectedUsers) {\n api.users\n .checkUserServiceAccounts(selectedUsers)\n .then((res) => {\n if (res.data) {\n setUserSAList(res.data.userServiceAccountList ?? []);\n if (res.data.hasSA) {\n setHasSA(true);\n }\n }\n })\n .catch((err) =>\n dispatch(setErrorSnackMessage(errorToHandler(err.error))),\n )\n .finally(() => setLoadingSA(false));\n }\n }, [selectedUsers, dispatch]);\n\n if (!selectedUsers) {\n return null;\n }\n const renderUsers = selectedUsers.map((user) => (\n
\n {user}\n
\n ));\n const viewAction = (selectionElement: any): void => {\n navigate(\n `${IAM_PAGES.USERS}/${encodeURIComponent(selectionElement.userName)}`,\n );\n onClose();\n };\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n },\n ];\n\n const onConfirmDelete = () => {\n for (let user of selectedUsers) {\n if (user === userLoggedIn) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Cannot delete currently logged in user\",\n detailedError: `Cannot delete currently logged in user ${userLoggedIn}`,\n }),\n );\n closeDeleteModalAndRefresh(true);\n } else {\n api.user\n .removeUser(user)\n .then((res) => {\n closeDeleteModalAndRefresh(true);\n navigate(`${IAM_PAGES.USERS}`);\n })\n .finally(() => setDeleteLoading(false));\n }\n }\n };\n\n const noSAtext =\n \"Are you sure you want to delete the following \" +\n selectedUsers.length +\n \" \" +\n \"user\" +\n (selectedUsers.length > 1 ? \"s?\" : \"?\");\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n loadingSA ? (\n \n ) : (\n \n {hasSA ? (\n \n \n Click on a user to view the full listing of associated\n Access Keys. All Access Keys associated with a user will\n be deleted along with the user.\n
\n
\n Are you sure you want to continue?\n
\n }\n title=\"Warning: One or more users selected has associated Access Keys.\"\n sx={{ margin: \"15px 0\" }}\n />\n \n
\n ) : (\n \n {noSAtext}\n {renderUsers}\n \n )}\n \n )\n }\n />\n );\n};\n\nexport default DeleteUser;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { stringSort } from \"../../../utils/sortFunctions\";\nimport { GroupsList } from \"../Groups/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport api from \"../../../common/api\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedGroups: string[];\n setSelectedGroups: any;\n}\n\nconst GroupsSelectors = ({\n selectedGroups,\n setSelectedGroups,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchGroups = useCallback(() => {\n api\n .invoke(\"GET\", `/api/v1/groups`)\n .then((res: GroupsList) => {\n let groups = get(res, \"groups\", []);\n\n if (!groups) {\n groups = [];\n }\n setRecords(groups.sort(stringSort));\n isLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchGroups();\n }\n }, [loading, fetchGroups]);\n\n const selGroups = !selectedGroups ? [] : selectedGroups;\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selGroups]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedGroups(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.includes(filter),\n );\n\n return (\n \n {loading && }\n {records !== null && records.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Groups Available\n \n )}\n \n );\n};\n\nexport default GroupsSelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n AddIcon,\n Button,\n DeleteIcon,\n GroupsIcon,\n HelpBox,\n PageLayout,\n UsersIcon,\n DataTable,\n Grid,\n ProgressBar,\n ActionLink,\n} from \"mds\";\n\nimport { User, UsersList } from \"./types\";\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport {\n addUserToGroupPermissions,\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n IAM_PAGES,\n IAM_SCOPES,\n listUsersPermissions,\n permissionTooltipHelper,\n S3_ALL_RESOURCES,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport api from \"../../../common/api\";\nimport SearchBox from \"../Common/SearchBox\";\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst DeleteUser = withSuspense(React.lazy(() => import(\"./DeleteUser\")));\nconst AddToGroup = withSuspense(React.lazy(() => import(\"./BulkAddToGroup\")));\n\nconst ListUsers = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [addGroupOpen, setAddGroupOpen] = useState(false);\n const [filter, setFilter] = useState(\"\");\n const [checkedUsers, setCheckedUsers] = useState([]);\n\n const displayListUsers = hasPermission(\n CONSOLE_UI_RESOURCE,\n listUsersPermissions,\n );\n\n const viewUser = hasPermission(CONSOLE_UI_RESOURCE, viewUserPermissions);\n\n const addUserToGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n addUserToGroupPermissions,\n );\n\n const deleteUser = hasPermission(CONSOLE_UI_RESOURCE, deleteUserPermissions);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n setLoading(true);\n setCheckedUsers([]);\n }\n };\n\n const closeAddGroupBulk = (unCheckAll: boolean = false) => {\n setAddGroupOpen(false);\n if (unCheckAll) {\n setCheckedUsers([]);\n }\n };\n\n useEffect(() => {\n if (loading) {\n if (displayListUsers) {\n api\n .invoke(\"GET\", `/api/v1/users`)\n .then((res: UsersList) => {\n const users = res.users === null ? [] : res.users;\n\n setLoading(false);\n setRecords(users.sort(usersSort));\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, dispatch, displayListUsers]);\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const { target: { value = \"\", checked = false } = {} } = e;\n\n let elements: string[] = [...checkedUsers]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n\n setCheckedUsers(elements);\n\n return elements;\n };\n\n const viewAction = (selectionElement: any): void => {\n navigate(\n `${IAM_PAGES.USERS}/${encodeURIComponent(selectionElement.accessKey)}`,\n );\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !viewUser,\n },\n {\n type: \"edit\",\n onClick: viewAction,\n disableButtonFunction: () => !viewUser,\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"list_users\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {addGroupOpen && (\n {\n closeAddGroupBulk(close);\n }}\n />\n )}\n } />\n\n \n \n \n \n \n \n {\n setDeleteOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n disabled={checkedUsers.length === 0}\n variant={\"secondary\"}\n aria-label=\"delete-selected-users\"\n />\n \n \n \n \n }\n disabled={checkedUsers.length <= 0}\n onClick={() => {\n if (checkedUsers.length > 0) {\n setAddGroupOpen(true);\n }\n }}\n variant={\"regular\"}\n />\n \n \n \n \n }\n onClick={() => {\n navigate(`${IAM_PAGES.USER_ADD}`);\n }}\n variant={\"callAction\"}\n disabled={\n !hasPermission(\n \"console-ui\",\n [\n IAM_SCOPES.ADMIN_CREATE_USER,\n IAM_SCOPES.ADMIN_LIST_USER_POLICIES,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n IAM_SCOPES.ADMIN_ATTACH_USER_OR_GROUP_POLICY,\n ],\n true,\n )\n }\n />\n \n \n \n\n {loading && }\n {!loading && (\n \n {records.length > 0 && (\n \n \n \n \n \n \n }\n help={\n \n A MinIO user consists of a unique access key (username)\n and corresponding secret key (password). Clients must\n authenticate their identity by specifying both a valid\n access key (username) and the corresponding secret key\n (password) of an existing MinIO user.\n
\n Groups provide a simplified method for managing shared\n permissions among users with common access patterns and\n workloads.\n
\n
\n Users inherit access permissions to data and resources\n through the groups they belong to.\n
\n MinIO uses Policy-Based Access Control (PBAC) to define\n the authorized actions and resources to which an\n authenticated user has access. Each policy describes one\n or more actions and conditions that outline the\n permissions of a user or group of users.\n
\n
\n Each user can access only those resources and operations\n which are explicitly granted by the built-in role. MinIO\n denies access to any other resource or action by\n default.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n
\n )}\n {records.length === 0 && (\n \n \n }\n help={\n \n A MinIO user consists of a unique access key\n (username) and corresponding secret key (password).\n Clients must authenticate their identity by specifying\n both a valid access key (username) and the\n corresponding secret key (password) of an existing\n MinIO user.\n
\n Groups provide a simplified method for managing shared\n permissions among users with common access patterns\n and workloads.\n
\n
\n Users inherit access permissions to data and resources\n through the groups they belong to.\n
\n MinIO uses Policy-Based Access Control (PBAC) to\n define the authorized actions and resources to which\n an authenticated user has access. Each policy\n describes one or more actions and conditions that\n outline the permissions of a user or group of users.\n
\n
\n Each user can access only those resources and\n operations which are explicitly granted by the\n built-in role. MinIO denies access to any other\n resource or action by default.\n \n
\n
\n To get started,{\" \"}\n {\n navigate(`${IAM_PAGES.USER_ADD}`);\n }}\n >\n Create a User\n \n .\n \n
\n }\n />\n
\n
\n )}\n
\n )}\n
\n
\n
\n );\n};\n\nexport default ListUsers;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\n\nimport {\n AddMembersToGroupIcon,\n Button,\n FormLayout,\n Grid,\n Box,\n ProgressBar,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport api from \"../../../common/api\";\nimport GroupsSelectors from \"./GroupsSelectors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface IChangeUserGroupsContentProps {\n closeModalAndRefresh: () => void;\n selectedUser: string;\n open: boolean;\n}\n\nconst ChangeUserGroups = ({\n closeModalAndRefresh,\n selectedUser,\n open,\n}: IChangeUserGroupsContentProps) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n const [enabled, setEnabled] = useState(false);\n const [selectedGroups, setSelectedGroups] = useState([]);\n\n const getUserInformation = useCallback(() => {\n if (!selectedUser) {\n return null;\n }\n\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURIComponent(selectedUser)}`)\n .then((res) => {\n setAddLoading(false);\n setAccessKey(res.accessKey);\n setSelectedGroups(res.memberOf || []);\n setEnabled(res.status === \"enabled\");\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [selectedUser, dispatch]);\n\n useEffect(() => {\n if (selectedUser === null) {\n setAccessKey(\"\");\n setSecretKey(\"\");\n setSelectedGroups([]);\n } else {\n getUserInformation();\n }\n }, [selectedUser, getUserInformation]);\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n if (selectedUser !== null) {\n api\n .invoke(\"PUT\", `/api/v1/user/${encodeURIComponent(selectedUser)}`, {\n status: enabled ? \"enabled\" : \"disabled\",\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n } else {\n api\n .invoke(\"POST\", \"/api/v1/users\", {\n accessKey,\n secretKey,\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }\n };\n\n const resetForm = () => {\n if (selectedUser !== null) {\n setSelectedGroups([]);\n return;\n }\n setAccessKey(\"\");\n setSecretKey(\"\");\n setSelectedGroups([]);\n };\n\n const sendEnabled =\n accessKey.trim() !== \"\" &&\n ((secretKey.trim() !== \"\" && selectedUser === null) ||\n selectedUser !== null);\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title={\"Set Groups\"}\n titleIcon={}\n >\n \n ) => {\n saveRecord(e);\n }}\n >\n \n {\n setSelectedGroups(elements);\n }}\n />\n \n \n \n\n \n \n {addLoading && (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default ChangeUserGroups;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport {\n Box,\n Button,\n FormLayout,\n IAMPoliciesIcon,\n ProgressBar,\n Grid,\n} from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { IPolicyItem } from \"../Users/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"./AddUsersSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../common/api\";\nimport PolicySelectors from \"../Policies/PolicySelectors\";\n\ninterface ISetUserPoliciesProps {\n closeModalAndRefresh: () => void;\n selectedUser: string;\n currentPolicies: IPolicyItem[];\n open: boolean;\n}\n\nconst SetUserPolicies = ({\n closeModalAndRefresh,\n selectedUser,\n currentPolicies,\n open,\n}: ISetUserPoliciesProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [loading, setLoading] = useState(false);\n const [actualPolicy, setActualPolicy] = useState([]);\n\n const statePolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const SetUserPoliciesAction = () => {\n let entity = \"user\";\n let value = selectedUser;\n\n setLoading(true);\n\n api\n .invoke(\"PUT\", `/api/v1/set-policy`, {\n name: statePolicies,\n entityName: value,\n entityType: entity,\n })\n .then(() => {\n setLoading(false);\n dispatch(setSelectedPolicies([]));\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const resetSelection = () => {\n dispatch(setSelectedPolicies(actualPolicy));\n };\n\n useEffect(() => {\n if (open) {\n const userPolicy: string[] = currentPolicies.map((pol) => {\n return pol.policy;\n });\n setActualPolicy(userPolicy);\n dispatch(setSelectedPolicies(userPolicy));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, selectedUser]);\n\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title=\"Set Policies\"\n titleIcon={}\n >\n \n \n \n \n \n \n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default SetUserPolicies;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AddIcon, Box, Button, DataTable, DeleteIcon, SectionTitle } from \"mds\";\nimport api from \"../../../common/api\";\nimport { NewServiceAccount } from \"../Common/CredentialsPrompt/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport DeleteServiceAccount from \"../Account/DeleteServiceAccount\";\nimport CredentialsPrompt from \"../Common/CredentialsPrompt/CredentialsPrompt\";\n\nimport DeleteMultipleServiceAccounts from \"./DeleteMultipleServiceAccounts\";\nimport { selectSAs } from \"../Configurations/utils\";\nimport EditServiceAccount from \"../Account/EditServiceAccount\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { ServiceAccounts } from \"../../../api/consoleApi\";\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { ACCOUNT_TABLE_COLUMNS } from \"../Account/AccountUtils\";\n\ninterface IUserServiceAccountsProps {\n user: string;\n hasPolicy: boolean;\n}\n\nconst UserServiceAccountsPanel = ({\n user,\n hasPolicy,\n}: IUserServiceAccountsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedServiceAccount, setSelectedServiceAccount] = useState<\n string | null\n >(null);\n const [showNewCredentials, setShowNewCredentials] = useState(false);\n const [newServiceAccount, setNewServiceAccount] =\n useState(null);\n const [selectedSAs, setSelectedSAs] = useState([]);\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [editOpen, setEditOpen] = useState(false);\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\n \"GET\",\n `/api/v1/user/${encodeURIComponent(user)}/service-accounts`,\n )\n .then((res: ServiceAccounts) => {\n setLoading(false);\n const sortedRows = res.sort(usersSort);\n setRecords(sortedRows);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, setLoading, setRecords, user, dispatch]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n if (refresh) {\n dispatch(setSnackBarMessage(`Access Keys deleted successfully.`));\n setSelectedSAs([]);\n setLoading(true);\n }\n };\n\n const closeCredentialsModal = () => {\n setShowNewCredentials(false);\n setNewServiceAccount(null);\n };\n\n const editModalOpen = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setEditOpen(true);\n };\n\n const confirmDeleteServiceAccount = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setDeleteOpen(true);\n };\n\n const closePolicyModal = () => {\n setEditOpen(false);\n setLoading(true);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: (value: any) => {\n if (value) {\n editModalOpen(value.accessKey);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (value: any) => {\n if (value) {\n confirmDeleteServiceAccount(value.accessKey);\n }\n },\n },\n {\n type: \"edit\",\n onClick: (value: any) => {\n if (value) {\n editModalOpen(value.accessKey);\n }\n },\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"user_details_accounts\"));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {deleteMultipleOpen && (\n \n )}\n {showNewCredentials && (\n {\n closeCredentialsModal();\n }}\n entity=\"Access Key\"\n />\n )}\n {editOpen && (\n \n )}\n\n \n \n {\n setDeleteMultipleOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n disabled={selectedSAs.length === 0}\n variant={\"secondary\"}\n />\n \n \n \n }\n onClick={() => {\n navigate(\n `/identity/users/new-user-sa/${encodeURIComponent(user)}`,\n );\n }}\n disabled={!hasPolicy}\n />\n \n \n \n }\n >\n Access Keys\n \n\n selectSAs(e, setSelectedSAs, selectedSAs)}\n selectedItems={selectedSAs}\n isLoading={loading}\n records={records}\n idField=\"accessKey\"\n />\n \n );\n};\n\nexport default UserServiceAccountsPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport {\n Box,\n Button,\n ChangePasswordIcon,\n FormLayout,\n InputBox,\n ProgressBar,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, ChangeUserPasswordRequest } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface IChangeUserPasswordProps {\n open: boolean;\n userName: string;\n closeModal: () => void;\n}\n\nconst ChangeUserPassword = ({\n open,\n userName,\n closeModal,\n}: IChangeUserPasswordProps) => {\n const dispatch = useAppDispatch();\n const [newPassword, setNewPassword] = useState(\"\");\n const [reNewPassword, setReNewPassword] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const changeUserPassword = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (loading) {\n return;\n }\n setLoading(true);\n\n if (newPassword.length < 8) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"Passwords must be at least 8 characters long\",\n detailedError: \"\",\n }),\n );\n setLoading(false);\n return;\n }\n\n let request: ChangeUserPasswordRequest = {\n selectedUser: userName,\n newSecretKey: newPassword,\n };\n\n api.account\n .changeUserPassword(request)\n .then((res) => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n dispatch(\n setSnackBarMessage(\n `Successfully updated the password for the user ${userName}.`,\n ),\n );\n closeModal();\n })\n .catch(async (res) => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return open ? (\n {\n setNewPassword(\"\");\n setReNewPassword(\"\");\n closeModal();\n }}\n titleIcon={}\n >\n ) => {\n changeUserPassword(e);\n }}\n >\n \n \n Change password for: {userName}\n \n ) => {\n setNewPassword(event.target.value);\n }}\n label=\"New Password\"\n type=\"password\"\n value={newPassword}\n />\n ) => {\n setReNewPassword(event.target.value);\n }}\n label=\"Type New Password Again\"\n type=\"password\"\n value={reNewPassword}\n />\n \n 0 && newPassword === reNewPassword)\n }\n label={\"Save\"}\n />\n \n {loading && (\n \n \n \n )}\n \n \n \n ) : null;\n};\n\nexport default ChangeUserPassword;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n IAMPoliciesIcon,\n PageLayout,\n PasswordKeyIcon,\n ScreenTitle,\n SectionTitle,\n Switch,\n Tabs,\n TrashIcon,\n UsersIcon,\n} from \"mds\";\nimport { IPolicyItem } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setHelpName, setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport {\n assignGroupPermissions,\n assignIAMPolicyPermissions,\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n disableUserPermissions,\n editServiceAccountPermissions,\n enableDisableUserPermissions,\n enableUserPermissions,\n getGroupPermissions,\n IAM_PAGES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport { useAppDispatch } from \"../../../store\";\nimport { policyDetailsSort } from \"../../../utils/sortFunctions\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport api from \"../../../common/api\";\nimport ChangeUserGroups from \"./ChangeUserGroups\";\nimport SetUserPolicies from \"./SetUserPolicies\";\nimport UserServiceAccountsPanel from \"./UserServiceAccountsPanel\";\nimport ChangeUserPasswordModal from \"../Account/ChangeUserPasswordModal\";\nimport DeleteUser from \"./DeleteUser\";\n\ninterface IGroupItem {\n group: string;\n}\n\nconst UserDetails = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [loading, setLoading] = useState(false);\n const [addGroupOpen, setAddGroupOpen] = useState(false);\n const [policyOpen, setPolicyOpen] = useState(false);\n const [addLoading, setAddLoading] = useState(false);\n const [enabled, setEnabled] = useState(false);\n const [selectedGroups, setSelectedGroups] = useState([]);\n const [currentGroups, setCurrentGroups] = useState([]);\n const [currentPolicies, setCurrentPolicies] = useState([]);\n const [changeUserPasswordModalOpen, setChangeUserPasswordModalOpen] =\n useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [hasPolicy, setHasPolicy] = useState(false);\n const [selectedTab, setSelectedTab] = useState(\"groups\");\n\n const enableEnabled =\n hasPermission(CONSOLE_UI_RESOURCE, enableUserPermissions) && !enabled;\n const disableEnabled =\n hasPermission(CONSOLE_UI_RESOURCE, disableUserPermissions) && enabled;\n\n const userName = params.userName || \"\";\n\n const changeUserPassword = () => {\n setChangeUserPasswordModalOpen(true);\n };\n\n const deleteUser = () => {\n setDeleteOpen(true);\n };\n\n const userLoggedIn = localStorage.getItem(\"userLoggedIn\") || \"\";\n const canAssignPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n assignIAMPolicyPermissions,\n true,\n );\n const canAssignGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n assignGroupPermissions,\n true,\n );\n\n const viewGroup = hasPermission(CONSOLE_UI_RESOURCE, getGroupPermissions);\n\n const getUserInformation = useCallback(() => {\n if (userName === \"\") {\n return null;\n }\n setLoading(true);\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURIComponent(userName)}`)\n .then((res) => {\n setAddLoading(false);\n const memberOf = res.memberOf || [];\n setSelectedGroups(memberOf);\n\n const currentGroups: IGroupItem[] = memberOf.map((group: string) => {\n return {\n group: group,\n };\n });\n\n setCurrentGroups(currentGroups);\n const currentPolicies: IPolicyItem[] = res.policy.map(\n (policy: string) => {\n return {\n policy: policy,\n };\n },\n );\n\n currentPolicies.sort(policyDetailsSort);\n\n setCurrentPolicies(currentPolicies);\n setEnabled(res.status === \"enabled\");\n setHasPolicy(res.hasPolicy);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [userName, dispatch]);\n\n const saveRecord = (isEnabled: boolean) => {\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api\n .invoke(\"PUT\", `/api/v1/user/${encodeURIComponent(userName)}`, {\n status: isEnabled ? \"enabled\" : \"disabled\",\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"user_details_groups\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n getUserInformation();\n }, [getUserInformation]);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n getUserInformation();\n }\n };\n\n const groupViewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURIComponent(group.group)}`);\n };\n\n const groupTableActions = [\n {\n type: \"view\",\n onClick: groupViewAction,\n disableButtonFunction: () => !viewGroup,\n },\n ];\n\n return (\n \n {addGroupOpen && (\n {\n setAddGroupOpen(false);\n getUserInformation();\n }}\n />\n )}\n {policyOpen && (\n {\n setPolicyOpen(false);\n getUserInformation();\n }}\n />\n )}\n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {changeUserPasswordModalOpen && (\n setChangeUserPasswordModalOpen(false)}\n />\n )}\n \n navigate(IAM_PAGES.USERS)}\n />\n \n }\n actions={}\n />\n \n \n \n }\n title={userName}\n subTitle={\"\"}\n actions={\n \n \n User Status:\n \n \n {enabled ? \"Enabled\" : \"Disabled\"}\n \n \n {\n setEnabled(!enabled);\n saveRecord(!enabled);\n }}\n switchOnly\n disabled={!enableEnabled && !disableEnabled}\n />\n \n \n }\n variant={\"secondary\"}\n disabled={\n !hasPermission(\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n ) || userLoggedIn === userName\n }\n />\n \n\n \n }\n variant={\"regular\"}\n disabled={userLoggedIn === userName}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n\n \n \n \n dispatch(setHelpName(\"user_details_groups\"))\n }\n >\n \n {\n setAddGroupOpen(true);\n }}\n icon={}\n variant={\"callAction\"}\n disabled={!canAssignGroup}\n />\n \n }\n >\n Groups\n \n \n \n dispatch(setHelpName(\"user_details_groups\"))\n }\n >\n \n \n \n ),\n },\n {\n tabConfig: {\n id: \"service_accounts\",\n label: \"Service Accounts\",\n disabled: !hasPermission(\n CONSOLE_UI_RESOURCE,\n editServiceAccountPermissions,\n ),\n },\n content: (\n \n ),\n },\n {\n tabConfig: {\n id: \"policies\",\n label: \"Policies\",\n disabled: !canAssignPolicy,\n },\n content: (\n \n \n dispatch(setHelpName(\"user_details_policies\"))\n }\n >\n \n {\n setPolicyOpen(true);\n }}\n icon={}\n variant={\"callAction\"}\n disabled={!canAssignPolicy}\n />\n \n }\n >\n Policies\n \n \n \n {\n navigate(\n `${IAM_PAGES.POLICIES}/${encodeURIComponent(\n policy.policy,\n )}`,\n );\n },\n },\n ]}\n columns={[{ label: \"Name\", elementKey: \"policy\" }]}\n isLoading={loading}\n records={currentPolicies}\n entityName=\"Policies\"\n idField=\"policy\"\n />\n \n \n ),\n },\n ]}\n />\n \n \n \n \n );\n};\n\nexport default UserDetails;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\n\nimport {\n Box,\n ChangeAccessPolicyIcon,\n GroupsIcon,\n HelpIconFilled,\n UsersIcon,\n} from \"mds\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\nconst AddUserHelpBox = () => {\n return (\n \n \n \n
Learn more about the Users feature
\n \n \n A MinIO user consists of a unique access key (username) and\n corresponding secret key (password). Clients must authenticate their\n identity by specifying both a valid access key (username) and the\n corresponding secret key (password) of an existing MinIO user.\n
\n
\n Each user can have one or more assigned policies that explicitly list\n the actions and resources to which that user has access. Users can also\n inherit policies from the groups in which they have membership.\n
\n
\n\n \n } description={`Create Users`} />\n } description={`Manage Groups`} />\n }\n description={`Assign Policies`}\n />\n \n \n );\n};\n\nexport default AddUserHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { setUserName } from \"./AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { InputBox } from \"mds\";\n\nconst UserSelector = () => {\n const dispatch = useAppDispatch();\n const userName = useSelector((state: AppState) => state.createUser.userName);\n return (\n ) => {\n dispatch(setUserName(e.target.value));\n }}\n />\n );\n};\nexport default UserSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { InputBox } from \"mds\";\nimport { setSecretKey } from \"./AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\n\nconst PasswordSelector = () => {\n const dispatch = useAppDispatch();\n const secretKey = useSelector(\n (state: AppState) => state.createUser.secretKey,\n );\n\n return (\n ) => {\n dispatch(setSecretKey(e.target.value));\n }}\n autoComplete=\"current-password\"\n />\n );\n};\nexport default PasswordSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport {\n BackLink,\n Button,\n CreateUserIcon,\n FormLayout,\n Grid,\n PageLayout,\n ProgressBar,\n} from \"mds\";\nimport { createUserAsync, resetFormAsync } from \"./thunk/AddUsersThunk\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { useNavigate } from \"react-router-dom\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\nimport {\n setAddLoading,\n setSelectedGroups,\n setSendEnabled,\n} from \"./AddUsersSlice\";\nimport AddUserHelpBox from \"./AddUserHelpBox\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PolicySelectors from \"../Policies/PolicySelectors\";\nimport UserSelector from \"./UserSelector\";\nimport PasswordSelector from \"./PasswordSelector\";\nimport GroupsSelectors from \"./GroupsSelectors\";\n\nconst AddUser = () => {\n const dispatch = useAppDispatch();\n const selectedPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n const selectedGroups = useSelector(\n (state: AppState) => state.createUser.selectedGroups,\n );\n const addLoading = useSelector(\n (state: AppState) => state.createUser.addLoading,\n );\n const sendEnabled = useSelector(\n (state: AppState) => state.createUser.sendEnabled,\n );\n const secretKeylength = useSelector(\n (state: AppState) => state.createUser.secretKeylength,\n );\n const navigate = useNavigate();\n dispatch(setSendEnabled());\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (secretKeylength < 8) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Passwords must be at least 8 characters long\",\n detailedError: \"\",\n }),\n );\n dispatch(setAddLoading(false));\n return;\n }\n if (addLoading) {\n return;\n }\n dispatch(setAddLoading(true));\n dispatch(createUserAsync())\n .unwrap() // <-- async Thunk returns a promise, that can be 'unwrapped')\n .then(() => navigate(`${IAM_PAGES.USERS}`));\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"add_user\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.USERS)}\n />\n }\n actions={}\n />\n \n }\n helpBox={}\n >\n ) => {\n saveRecord(e);\n }}\n >\n \n \n \n {\n dispatch(setSelectedGroups(elements));\n }}\n />\n {addLoading && (\n \n \n \n )}\n\n \n {\n dispatch(resetFormAsync());\n }}\n label={\"Clear\"}\n />\n\n \n \n \n \n \n \n \n );\n};\n\nexport default AddUser;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport {\n Box,\n HelpIconFilled,\n IAMPoliciesIcon,\n PasswordKeyIcon,\n ServiceAccountIcon,\n} from \"mds\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\nconst AddUserServiceAccountHelpBox = () => {\n return (\n \n \n \n
Learn more about Access Keys
\n \n \n \n }\n description={`Create Access Keys`}\n />\n \n Access Keys inherit the policies explicitly attached to the parent\n user, and the policies attached to each group in which the parent\n user has membership.\n \n \n \n }\n description={`Assign Custom Credentials`}\n />\n \n Randomized access credentials are recommended, and provided by\n default. You may use your own custom Access Key and Secret Key by\n replacing the default values. After creation of any Access Key, you\n will be given the opportunity to view and download the account\n credentials.\n \n \n Access Keys support programmatic access by applications. You cannot\n use a Access Key to log into the MinIO Console.\n \n \n \n }\n description={`Assign Access Policies`}\n />\n \n You can specify an optional JSON-formatted IAM policy to further\n restrict Access Key access to a subset of the actions and resources\n explicitly allowed for the parent user. Additional access beyond\n that of the parent user cannot be implemented through these\n policies.\n \n \n You cannot modify the optional Access Key IAM policy after saving.\n \n \n \n \n \n );\n};\n\nexport default AddUserServiceAccountHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n Button,\n FormLayout,\n Grid,\n InputBox,\n PageLayout,\n PasswordKeyIcon,\n ServiceAccountCredentialsIcon,\n ServiceAccountIcon,\n Switch,\n HelpTip,\n DateTimeInput,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { NewServiceAccount } from \"../Common/CredentialsPrompt/types\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { getRandomString } from \"../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport api from \"../../../../src/common/api\";\nimport CredentialsPrompt from \"../Common/CredentialsPrompt/CredentialsPrompt\";\nimport AddUserServiceAccountHelpBox from \"./AddUserServiceAccountHelpBox\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PanelTitle from \"../Common/PanelTitle/PanelTitle\";\n\nconst AddServiceAccount = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [addSending, setAddSending] = useState(false);\n const [accessKey, setAccessKey] = useState(getRandomString(20));\n const [secretKey, setSecretKey] = useState(getRandomString(40));\n const [isRestrictedByPolicy, setIsRestrictedByPolicy] =\n useState(false);\n const [newServiceAccount, setNewServiceAccount] =\n useState(null);\n const [policyJSON, setPolicyJSON] = useState(\"\");\n\n const userName = params.userName || \"\";\n\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [comments, setComments] = useState(\"\");\n const [expiry, setExpiry] = useState();\n\n useEffect(() => {\n if (addSending) {\n const expiryDt = expiry ? expiry.toJSDate().toISOString() : null;\n api\n .invoke(\n \"POST\",\n `/api/v1/user/${encodeURIComponent(\n userName,\n )}/service-account-credentials`,\n {\n policy: policyJSON,\n accessKey: accessKey,\n secretKey: secretKey,\n description: description,\n comment: comments,\n name: name,\n expiry: expiryDt,\n },\n )\n .then((res) => {\n setAddSending(false);\n setNewServiceAccount({\n accessKey: res.accessKey || \"\",\n secretKey: res.secretKey || \"\",\n url: res.url || \"\",\n });\n })\n .catch((err: ErrorResponseHandler) => {\n setAddSending(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [\n addSending,\n setAddSending,\n dispatch,\n policyJSON,\n userName,\n accessKey,\n secretKey,\n name,\n description,\n expiry,\n comments,\n ]);\n\n useEffect(() => {\n if (isRestrictedByPolicy) {\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURIComponent(userName)}/policies`)\n\n .then((res) => {\n setPolicyJSON(JSON.stringify(JSON.parse(res.policy), null, 4));\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n });\n }\n }, [isRestrictedByPolicy, userName]);\n\n const addUserServiceAccount = (e: React.FormEvent) => {\n e.preventDefault();\n setAddSending(true);\n };\n\n const resetForm = () => {\n setNewServiceAccount(null);\n setAccessKey(\"\");\n setSecretKey(\"\");\n };\n\n const closeCredentialsModal = () => {\n setNewServiceAccount(null);\n navigate(`${IAM_PAGES.USERS}/${encodeURIComponent(userName)}`);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"add_user_SA\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {newServiceAccount && (\n {\n closeCredentialsModal();\n }}\n entity=\"Access Key\"\n />\n )}\n \n \n navigate(`${IAM_PAGES.USERS}/${encodeURIComponent(userName)}`)\n }\n label={\"User Details - \" + userName}\n />\n }\n actions={}\n />\n \n }\n icon={}\n title={`Create Access Key for ${userName}`}\n >\n ) => {\n e.preventDefault();\n addUserServiceAccount(e);\n }}\n >\n {\n setAccessKey(e.target.value);\n }}\n startIcon={}\n />\n {\n setSecretKey(e.target.value);\n }}\n startIcon={}\n />\n\n ) => {\n setIsRestrictedByPolicy(event.target.checked);\n }}\n label={\"Restrict beyond user policy\"}\n description={\n \"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies.\"\n }\n />\n {isRestrictedByPolicy && (\n \n \n \n \n Guide to access policy structure\n \n \n }\n placement=\"right\"\n >\n \n Current User Policy - edit the JSON to remove\n permissions for this Access Key\n \n \n \n \n {\n setPolicyJSON(value);\n }}\n editorHeight={\"350px\"}\n helptip={\n \n \n Guide to access policy structure\n \n \n }\n />\n \n \n )}\n\n \n {\n setExpiry(e);\n }}\n id=\"expiryTime\"\n label={\"Expiry\"}\n timeFormat={\"24h\"}\n secondsSelector={false}\n />\n \n\n {\n setName(e.target.value);\n }}\n />\n {\n setDescription(e.target.value);\n }}\n />\n {\n setComments(e.target.value);\n }}\n />\n \n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default AddServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Route, Routes } from \"react-router-dom\";\nimport NotFoundPage from \"../../NotFoundPage\";\nimport ListUsers from \"./ListUsers\";\nimport UserDetails from \"./UserDetails\";\nimport AddUserScreen from \"./AddUserScreen\";\nimport AddUserServiceAccountScreen from \"./AddUserServiceAccountScreen\";\n\nconst Users = () => {\n return (\n \n } />\n } />\n }\n />\n } />\n } />\n \n );\n};\n\nexport default Users;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedServiceAccount","dispatch","useAppDispatch","loadingDelete","setLoadingDelete","useState","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","api","serviceAccounts","deleteServiceAccount","then","_","catch","async","err","res","json","setErrorSnackMessage","errorToHandler","finally","onClose","confirmationContent","_jsxs","Fragment","children","style","maxWidth","whiteSpace","wordWrap","label","value","Box","sx","marginTop","InputLabel","ReadBox","actionButton","CopyToClipboard","text","Button","id","variant","onClick","setModalSnackMessage","concat","marginRight","width","height","padding","icon","CopyIcon","WarningBlock","styled","div","theme","color","get","fontSize","margin","display","alignItems","download","filename","element","document","createElement","setAttribute","body","appendChild","click","removeChild","_ref2","newServiceAccount","open","closeModal","entity","consoleCreds","idp","ModalWrapper","modalOpen","ServiceAccountCredentialsIcon","Grid","container","item","xs","overflowY","maxHeight","fontWeight","Array","isArray","map","credentialsPair","index","CredentialItem","accessKey","secretKey","undefined","_Fragment","WarnIcon","modalStyleUtils","modalButtonBar","TooltipWrapper","tooltip","downloadImport","consoleExtras","itemMap","url","path","JSON","stringify","DownloadIcon","length","downloaddAllCredentials","allCredentials","PanelTitleContainer","h1","noTitle","records","setRecords","loading","filter","setFilter","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","useCallback","policies","listPolicies","_res$data$policies","data","sort","policySort","setModalErrorSnackMessage","useEffect","filteredRecords","elementItem","name","includes","className","ProgressBar","SearchBox","placeholder","onChange","DataTable","columns","elementKey","onSelect","e","targetD","target","checked","elements","push","setSelectedPolicies","selectedItems","entityName","idField","customPaperHeight","textAlign","selectedUsers","navigate","useNavigate","loadingSA","setLoadingSA","hasSA","setHasSA","userSAList","setUserSAList","deleteLoading","setDeleteLoading","userLoggedIn","localStorage","getItem","users","checkUserServiceAccounts","_res$data$userService","userServiceAccountList","error","renderUsers","user","tableActions","type","selectionElement","IAM_PAGES","USERS","encodeURIComponent","userName","noSAtext","errorMessage","detailedError","removeUser","Loader","InformativeMessage","message","itemActions","selectedGroups","setSelectedGroups","fetchGroups","invoke","groups","stringSort","selGroups","DeleteUser","withSuspense","React","AddToGroup","ListUsers","setLoading","setDeleteOpen","addGroupOpen","setAddGroupOpen","checkedUsers","setCheckedUsers","displayListUsers","hasPermission","CONSOLE_UI_RESOURCE","listUsersPermissions","viewUser","viewUserPermissions","addUserToGroup","addUserToGroupPermissions","deleteUser","deleteUserPermissions","usersSort","viewAction","disableButtonFunction","setHelpName","refresh","closeModalAndRefresh","close","unCheckAll","arguments","closeAddGroupBulk","PageHeaderWrapper","actions","HelpMenu","PageLayout","actionsTray","SecureComponent","resource","scopes","IAM_SCOPES","ADMIN_DELETE_USER","matchAll","errorProps","disabled","permissionTooltipHelper","DeleteIcon","ADMIN_ADD_USER_TO_GROUP","GroupsIcon","ADMIN_CREATE_USER","ADMIN_LIST_USER_POLICIES","ADMIN_LIST_GROUPS","S3_ALL_RESOURCES","ADMIN_ATTACH_USER_OR_GROUP_POLICY","AddIcon","USER_ADD","marginBottom","ADMIN_LIST_USERS","HelpBox","iconComponent","UsersIcon","help","href","rel","ActionLink","selectedUser","addLoading","setAddLoading","setAccessKey","setSecretKey","enabled","setEnabled","getUserInformation","memberOf","status","sendEnabled","trim","AddMembersToGroupIcon","noValidate","autoComplete","onSubmit","preventDefault","FormLayout","withBorders","containerPadding","GroupsSelectors","resetForm","actualPolicy","setActualPolicy","statePolicies","userPolicy","pol","policy","IAMPoliciesIcon","PolicySelectors","selectedPolicy","resetSelection","SetUserPoliciesAction","entityType","hasPolicy","setSelectedServiceAccount","showNewCredentials","setShowNewCredentials","setNewServiceAccount","selectedSAs","setSelectedSAs","deleteMultipleOpen","setDeleteMultipleOpen","editOpen","setEditOpen","fetchRecords","sortedRows","editModalOpen","confirmDeleteServiceAccount","DeleteServiceAccount","DeleteMultipleServiceAccounts","setSnackBarMessage","CredentialsPrompt","EditServiceAccount","selectedAccessKey","closePolicyModal","SectionTitle","separator","justifyContent","gap","ADMIN_CREATE_SERVICEACCOUNT","ADMIN_UPDATE_SERVICEACCOUNT","ADMIN_REMOVE_SERVICEACCOUNT","ADMIN_LIST_SERVICEACCOUNTS","ACCOUNT_TABLE_COLUMNS","selectSAs","newPassword","setNewPassword","reNewPassword","setReNewPassword","ChangePasswordIcon","event","request","newSecretKey","account","changeUserPassword","InputBox","UserDetails","params","useParams","policyOpen","setPolicyOpen","currentGroups","setCurrentGroups","setCurrentPolicies","changeUserPasswordModalOpen","setChangeUserPasswordModalOpen","setHasPolicy","selectedTab","setSelectedTab","enableEnabled","enableUserPermissions","disableEnabled","disableUserPermissions","canAssignPolicy","assignIAMPolicyPermissions","canAssignGroup","assignGroupPermissions","viewGroup","getGroupPermissions","group","policyDetailsSort","groupTableActions","GROUPS","ChangeUserGroups","SetUserPolicies","ChangeUserPasswordModal","BackLink","ScreenTitle","subTitle","enableDisableUserPermissions","Switch","indicatorLabels","isEnabled","switchOnly","TrashIcon","PasswordKeyIcon","Tabs","currentTabOrPath","onTabClick","options","tabConfig","content","onMouseMove","editServiceAccountPermissions","UserServiceAccountsPanel","POLICIES","FeatureItem","description","fontStyle","AddUserHelpBox","flex","border","borderRadius","flexFlow","HelpIconFilled","ChangeAccessPolicyIcon","UserSelector","autoFocus","setUserName","PasswordSelector","AddUser","secretKeylength","setSendEnabled","CreateUserIcon","helpBox","createUserAsync","unwrap","saveRecord","resetFormAsync","AddUserServiceAccountHelpBox","paddingBottom","ServiceAccountIcon","paddingTop","AddServiceAccount","addSending","setAddSending","getRandomString","isRestrictedByPolicy","setIsRestrictedByPolicy","policyJSON","setPolicyJSON","setName","setDescription","comments","setComments","expiry","setExpiry","expiryDt","toJSDate","toISOString","comment","parse","addUserServiceAccount","startIcon","HelpTip","placement","PanelTitle","formScrollable","CodeMirrorWrapper","editorHeight","helptip","DateTimeInput","noLabelMinWidth","timeFormat","secondsSelector","Users","Routes","Route","AddUserScreen","AddUserServiceAccountScreen","NotFoundPage"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/4676.578844c1.chunk.js b/web-app/build/static/js/4676.578844c1.chunk.js deleted file mode 100644 index 4516ddf48..000000000 --- a/web-app/build/static/js/4676.578844c1.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[4676],{4676:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});var l=n(65043),o=n(58661),s=n(89923),c=n(64159),i=n(20554),r=n(56629),a=n(53518),u=n(56483),p=n(70579);const d=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedPolicy:d}=e;const f=(0,i.jL)(),[y,h]=(0,l.useState)(!1);if(!d)return null;return(0,p.jsx)(o.A,{title:"Delete Policy",confirmText:"Delete",isOpen:n,titleIcon:(0,p.jsx)(s.xWY,{}),isLoading:y,onConfirm:()=>{h(!0),r.F.policy.removePolicy((0,u.nf)(d)).then((e=>{t(!0)})).catch((async e=>{const n=await e.json();f((0,c.C9)((0,a.S)(n))),t(!1)})).finally((()=>h(!1)))},onClose:()=>t(!1),confirmationContent:(0,p.jsxs)(l.Fragment,{children:["Are you sure you want to delete policy ",(0,p.jsx)("br",{}),(0,p.jsx)("b",{children:d}),"?"]})})}}}]); -//# sourceMappingURL=4676.578844c1.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/4676.578844c1.chunk.js.map b/web-app/build/static/js/4676.578844c1.chunk.js.map deleted file mode 100644 index 90b85d354..000000000 --- a/web-app/build/static/js/4676.578844c1.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/4676.578844c1.chunk.js","mappings":"uOAgCA,MAgDA,EAhDqBA,IAIM,IAJL,2BACpBC,EAA0B,WAC1BC,EAAU,eACVC,GACmBH,EACnB,MAAMI,GAAWC,EAAAA,EAAAA,OAGVC,EAAeC,IAAoBC,EAAAA,EAAAA,WAAkB,GAE5D,IAAKL,EACH,OAAO,KAkBT,OACEM,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,gBACLC,YAAa,SACbC,OAAQX,EACRY,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWV,EACXW,UAtBoBC,KACtBX,GAAiB,GACjBY,EAAAA,EAAIC,OACDC,cAAaC,EAAAA,EAAAA,IAAgBnB,IAC7BoB,MAAMC,IACLvB,GAA2B,EAAK,IAEjCwB,OAAMC,UACL,MAAMC,QAAaC,EAAIC,OACvBzB,GAAS0B,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,KAC7C1B,GAA2B,EAAM,IAElC+B,SAAQ,IAAMzB,GAAiB,IAAO,EAWvC0B,QA/BYA,IAAMhC,GAA2B,GAgC7CiC,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,2CAC+B5B,EAAAA,EAAAA,KAAA,UACvCA,EAAAA,EAAAA,KAAA,KAAA4B,SAAIlC,IAAmB,QAG3B,C","sources":["screens/Console/Policies/DeletePolicy.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport { encodeURLString } from \"common/utils\";\n\ninterface IDeletePolicyProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedPolicy: string;\n}\n\nconst DeletePolicy = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedPolicy,\n}: IDeletePolicyProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedPolicy) {\n return null;\n }\n\n const onConfirmDelete = () => {\n setLoadingDelete(true);\n api.policy\n .removePolicy(encodeURLString(selectedPolicy))\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n };\n\n return (\n }\n isLoading={loadingDelete}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete policy
\n {selectedPolicy}?\n
\n }\n />\n );\n};\n\nexport default DeletePolicy;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedPolicy","dispatch","useAppDispatch","loadingDelete","setLoadingDelete","useState","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","api","policy","removePolicy","encodeURLString","then","_","catch","async","err","res","json","setErrorSnackMessage","errorToHandler","finally","onClose","confirmationContent","_jsxs","Fragment","children"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/4676.8d6be1dd.chunk.js b/web-app/build/static/js/4676.8d6be1dd.chunk.js new file mode 100644 index 000000000..3c4d7d62e --- /dev/null +++ b/web-app/build/static/js/4676.8d6be1dd.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[4676],{4676:(e,t,n)=>{n.r(t),n.d(t,{default:()=>p});var l=n(65043),o=n(58661),s=n(89923),c=n(64159),i=n(20554),r=n(56629),a=n(53518),u=n(70579);const p=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedPolicy:p}=e;const d=(0,i.jL)(),[f,y]=(0,l.useState)(!1);if(!p)return null;return(0,u.jsx)(o.A,{title:"Delete Policy",confirmText:"Delete",isOpen:n,titleIcon:(0,u.jsx)(s.xWY,{}),isLoading:f,onConfirm:()=>{y(!0),r.F.policy.removePolicy(p).then((e=>{t(!0)})).catch((async e=>{const n=await e.json();d((0,c.C9)((0,a.S)(n))),t(!1)})).finally((()=>y(!1)))},onClose:()=>t(!1),confirmationContent:(0,u.jsxs)(l.Fragment,{children:["Are you sure you want to delete policy ",(0,u.jsx)("br",{}),(0,u.jsx)("b",{children:p}),"?"]})})}}}]); +//# sourceMappingURL=4676.8d6be1dd.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/4676.8d6be1dd.chunk.js.map b/web-app/build/static/js/4676.8d6be1dd.chunk.js.map new file mode 100644 index 000000000..7a7bcca9b --- /dev/null +++ b/web-app/build/static/js/4676.8d6be1dd.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/4676.8d6be1dd.chunk.js","mappings":"4NA+BA,MAgDA,EAhDqBA,IAIM,IAJL,2BACpBC,EAA0B,WAC1BC,EAAU,eACVC,GACmBH,EACnB,MAAMI,GAAWC,EAAAA,EAAAA,OAGVC,EAAeC,IAAoBC,EAAAA,EAAAA,WAAkB,GAE5D,IAAKL,EACH,OAAO,KAkBT,OACEM,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,gBACLC,YAAa,SACbC,OAAQX,EACRY,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWV,EACXW,UAtBoBC,KACtBX,GAAiB,GACjBY,EAAAA,EAAIC,OACDC,aAAalB,GACbmB,MAAMC,IACLtB,GAA2B,EAAK,IAEjCuB,OAAMC,UACL,MAAMC,QAAaC,EAAIC,OACvBxB,GAASyB,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,KAC7CzB,GAA2B,EAAM,IAElC8B,SAAQ,IAAMxB,GAAiB,IAAO,EAWvCyB,QA/BYA,IAAM/B,GAA2B,GAgC7CgC,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,2CAC+B3B,EAAAA,EAAAA,KAAA,UACvCA,EAAAA,EAAAA,KAAA,KAAA2B,SAAIjC,IAAmB,QAG3B,C","sources":["screens/Console/Policies/DeletePolicy.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeletePolicyProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedPolicy: string;\n}\n\nconst DeletePolicy = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedPolicy,\n}: IDeletePolicyProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedPolicy) {\n return null;\n }\n\n const onConfirmDelete = () => {\n setLoadingDelete(true);\n api.policy\n .removePolicy(selectedPolicy)\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n };\n\n return (\n }\n isLoading={loadingDelete}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete policy
\n {selectedPolicy}?\n
\n }\n />\n );\n};\n\nexport default DeletePolicy;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedPolicy","dispatch","useAppDispatch","loadingDelete","setLoadingDelete","useState","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","api","policy","removePolicy","then","_","catch","async","err","res","json","setErrorSnackMessage","errorToHandler","finally","onClose","confirmationContent","_jsxs","Fragment","children"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/4705.1a1c4cd3.chunk.js b/web-app/build/static/js/4705.1a1c4cd3.chunk.js new file mode 100644 index 000000000..788f55a0e --- /dev/null +++ b/web-app/build/static/js/4705.1a1c4cd3.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[4705],{42967:(e,l,t)=>{t.d(l,{A:()=>x});var s=t(65043),i=t(89923),n=t(8185),c=t(64681),o=t(64159),a=t(20554),r=t(62560),d=t(22166),u=t(56629),h=t(70579);const x=e=>{let{noTitle:l=!1}=e;const t=(0,a.jL)(),[x,p]=(0,s.useState)([]),[m,v]=(0,s.useState)(!1),[j,y]=(0,s.useState)(""),g=(0,d.d4)((e=>e.createUser.selectedPolicies)),b=(0,s.useCallback)((()=>{v(!0),u.F.policies.listPolicies().then((e=>{var l;const t=null!==(l=e.data.policies)&&void 0!==l?l:[];v(!1),p(t.sort(n.Hw))})).catch((e=>{v(!1),t((0,o.Dy)(e))}))}),[t]);(0,s.useEffect)((()=>{v(!0)}),[]),(0,s.useEffect)((()=>{m&&b()}),[m,b]);const f=x.filter((e=>e.name.includes(j)));return(0,h.jsxs)(i.xA9,{item:!0,xs:12,className:"inputItem",children:[m&&(0,h.jsx)(i.z21,{}),x.length>0?(0,h.jsxs)(s.Fragment,{children:[(0,h.jsx)(i.xA9,{item:!0,xs:12,className:"inputItem",children:(0,h.jsx)(c.A,{placeholder:"Start typing to search for a Policy",onChange:e=>{y(e)},value:j,label:l?"":"Assign Policies"})}),(0,h.jsx)(i.bQt,{columns:[{label:"Policy",elementKey:"name"}],onSelect:e=>{const l=e.target,s=l.value,i=l.checked;let n=[...g];i?n.push(s):n=n.filter((e=>e!==s)),n=n.filter((e=>""!==e)),t((0,r.Gy)(n))},selectedItems:g,isLoading:m,records:f,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,h.jsx)(i.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},74705:(e,l,t)=>{t.r(l),t.d(l,{default:()=>v});var s=t(65043),i=t(33097),n=t.n(i),c=t(22166),o=t(89923),a=t(64159),r=t(20554),d=t(77403),u=t(62560),h=t(94141),x=t(42967),p=t(20649),m=t(70579);const v=e=>{let{closeModalAndRefresh:l,selectedUser:t,selectedGroups:i,open:v}=e;const j=(0,r.jL)(),[y,g]=(0,s.useState)(!1),[b,f]=(0,s.useState)([]),[A,P]=(0,s.useState)([]),S=(0,c.d4)((e=>e.createUser.selectedPolicies));(0,s.useEffect)((()=>{if(v){if(1===(null===i||void 0===i?void 0:i.length))return void(1===(null===i||void 0===i?void 0:i.length)&&p.A.invoke("GET","/api/v1/group/".concat(encodeURIComponent(i[0]))).then((e=>{const l=n()(e,"policy","");f(l.split(",")),P(l.split(",")),j((0,u.Gy)(l.split(",")))})).catch((e=>{j((0,a.Dy)(e)),g(!1)})));const e=n()(t,"policy",[]);f(e),P(e),j((0,u.Gy)(e))}}),[v,null===i||void 0===i?void 0:i.length,t]);const k=n()(t,"accessKey","");return(0,m.jsxs)(h.A,{onClose:()=>{l()},modalOpen:v,title:"Set Policies",children:[(0,m.jsxs)(o.Hbc,{withBorders:!1,containerPadding:!1,children:[(1===(null===i||void 0===i?void 0:i.length)||null!=t)&&(0,m.jsxs)(s.Fragment,{children:[(0,m.jsx)(o.EmB,{label:"Selected ".concat(null!==i?"Group":"User"),sx:{width:"100%"},children:null!==i?i[0]:k}),(0,m.jsx)(o.EmB,{label:"Current Policy",sx:{width:"100%"},children:b.join(", ")})]}),i&&(null===i||void 0===i?void 0:i.length)>1&&(0,m.jsx)(o.EmB,{label:"Selected Groups",sx:{width:"100%"},children:i.join(", ")}),(0,m.jsx)(o.xA9,{item:!0,xs:12,children:(0,m.jsx)(x.A,{selectedPolicy:A})})]}),(0,m.jsxs)(o.xA9,{item:!0,xs:12,sx:d.Uz.modalButtonBar,children:[(0,m.jsx)(o.$nd,{id:"reset",type:"button",variant:"regular",onClick:()=>{P(b),j((0,u.Gy)(b))},label:"Reset"}),(0,m.jsx)(o.$nd,{id:"save",type:"button",variant:"callAction",color:"primary",disabled:y,onClick:()=>{let e=null,s=null;null!==i?s=i:null!==t&&(e=[t.accessKey]||0),g(!0),p.A.invoke("PUT","/api/v1/set-policy-multi",{name:S,groups:s,users:e}).then((()=>{g(!1),l()})).catch((e=>{g(!1),j((0,a.Dy)(e))}))},label:"Save"})]}),y&&(0,m.jsx)(o.xA9,{item:!0,xs:12,children:(0,m.jsx)(o.z21,{})})]})}}}]); +//# sourceMappingURL=4705.1a1c4cd3.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/4705.1a1c4cd3.chunk.js.map b/web-app/build/static/js/4705.1a1c4cd3.chunk.js.map new file mode 100644 index 000000000..105d92528 --- /dev/null +++ b/web-app/build/static/js/4705.1a1c4cd3.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/4705.1a1c4cd3.chunk.js","mappings":"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","sources":["screens/Console/Policies/PolicySelectors.tsx","screens/Console/Policies/SetPolicy.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Button, FormLayout, ReadBox, Grid, ProgressBar } from \"mds\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { User } from \"../Users/types\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport PolicySelectors from \"./PolicySelectors\";\nimport api from \"../../../common/api\";\n\ninterface ISetPolicyProps {\n closeModalAndRefresh: () => void;\n selectedUser: User | null;\n selectedGroups: string[] | null;\n open: boolean;\n}\n\nconst SetPolicy = ({\n closeModalAndRefresh,\n selectedUser,\n selectedGroups,\n open,\n}: ISetPolicyProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [loading, setLoading] = useState(false);\n const [actualPolicy, setActualPolicy] = useState([]);\n const [selectedPolicy, setSelectedPolicy] = useState([]);\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n const setPolicyAction = () => {\n let users = null;\n let groups = null;\n if (selectedGroups !== null) {\n groups = selectedGroups;\n } else {\n if (selectedUser !== null) {\n users = [selectedUser.accessKey] || [\" \"];\n }\n }\n\n setLoading(true);\n\n api\n .invoke(\"PUT\", `/api/v1/set-policy-multi`, {\n name: currentPolicies,\n groups: groups,\n users: users,\n })\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const fetchGroupInformation = () => {\n if (selectedGroups?.length === 1) {\n api\n .invoke(\"GET\", `/api/v1/group/${encodeURIComponent(selectedGroups[0])}`)\n .then((res: any) => {\n const groupPolicy: String = get(res, \"policy\", \"\");\n setActualPolicy(groupPolicy.split(\",\"));\n setSelectedPolicy(groupPolicy.split(\",\"));\n dispatch(setSelectedPolicies(groupPolicy.split(\",\")));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n setLoading(false);\n });\n }\n };\n\n const resetSelection = () => {\n setSelectedPolicy(actualPolicy);\n dispatch(setSelectedPolicies(actualPolicy));\n };\n\n useEffect(() => {\n if (open) {\n if (selectedGroups?.length === 1) {\n fetchGroupInformation();\n return;\n }\n\n const userPolicy: string[] = get(selectedUser, \"policy\", []);\n setActualPolicy(userPolicy);\n setSelectedPolicy(userPolicy);\n dispatch(setSelectedPolicies(userPolicy));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, selectedGroups?.length, selectedUser]);\n\n const userName = get(selectedUser, \"accessKey\", \"\");\n\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title=\"Set Policies\"\n >\n \n {(selectedGroups?.length === 1 || selectedUser != null) && (\n \n \n {selectedGroups !== null ? selectedGroups[0] : userName}\n \n \n {actualPolicy.join(\", \")}\n \n \n )}\n {selectedGroups && selectedGroups?.length > 1 && (\n \n {selectedGroups.join(\", \")}\n \n )}\n \n \n \n \n \n \n \n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default SetPolicy;\n"],"names":["_ref","noTitle","dispatch","useAppDispatch","records","setRecords","useState","loading","isLoading","filter","setFilter","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","useCallback","api","policies","listPolicies","then","res","_res$data$policies","data","sort","policySort","catch","err","setModalErrorSnackMessage","useEffect","filteredRecords","elementItem","name","includes","_jsxs","Grid","item","xs","className","children","_jsx","ProgressBar","length","Fragment","SearchBox","placeholder","onChange","value","label","DataTable","columns","elementKey","onSelect","e","targetD","target","checked","elements","push","element","setSelectedPolicies","selectedItems","entityName","idField","customPaperHeight","Box","sx","textAlign","padding","closeModalAndRefresh","selectedUser","selectedGroups","open","setLoading","actualPolicy","setActualPolicy","selectedPolicy","setSelectedPolicy","invoke","concat","encodeURIComponent","groupPolicy","get","split","userPolicy","userName","ModalWrapper","onClose","modalOpen","title","FormLayout","withBorders","containerPadding","ReadBox","width","join","PolicySelectors","modalStyleUtils","modalButtonBar","Button","id","type","variant","onClick","resetSelection","color","disabled","setPolicyAction","users","groups","accessKey"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/4705.2270c966.chunk.js b/web-app/build/static/js/4705.2270c966.chunk.js deleted file mode 100644 index 1727482ea..000000000 --- a/web-app/build/static/js/4705.2270c966.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[4705],{42967:(e,l,t)=>{t.d(l,{A:()=>x});var s=t(65043),i=t(89923),n=t(8185),c=t(64681),o=t(64159),a=t(20554),r=t(62560),d=t(22166),u=t(56629),h=t(70579);const x=e=>{let{noTitle:l=!1}=e;const t=(0,a.jL)(),[x,p]=(0,s.useState)([]),[m,v]=(0,s.useState)(!1),[j,y]=(0,s.useState)(""),g=(0,d.d4)((e=>e.createUser.selectedPolicies)),b=(0,s.useCallback)((()=>{v(!0),u.F.policies.listPolicies().then((e=>{var l;const t=null!==(l=e.data.policies)&&void 0!==l?l:[];v(!1),p(t.sort(n.Hw))})).catch((e=>{v(!1),t((0,o.Dy)(e))}))}),[t]);(0,s.useEffect)((()=>{v(!0)}),[]),(0,s.useEffect)((()=>{m&&b()}),[m,b]);const f=x.filter((e=>e.name.includes(j)));return(0,h.jsxs)(i.xA9,{item:!0,xs:12,className:"inputItem",children:[m&&(0,h.jsx)(i.z21,{}),x.length>0?(0,h.jsxs)(s.Fragment,{children:[(0,h.jsx)(i.xA9,{item:!0,xs:12,className:"inputItem",children:(0,h.jsx)(c.A,{placeholder:"Start typing to search for a Policy",onChange:e=>{y(e)},value:j,label:l?"":"Assign Policies"})}),(0,h.jsx)(i.bQt,{columns:[{label:"Policy",elementKey:"name"}],onSelect:e=>{const l=e.target,s=l.value,i=l.checked;let n=[...g];i?n.push(s):n=n.filter((e=>e!==s)),n=n.filter((e=>""!==e)),t((0,r.Gy)(n))},selectedItems:g,isLoading:m,records:f,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,h.jsx)(i.azJ,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},74705:(e,l,t)=>{t.r(l),t.d(l,{default:()=>j});var s=t(65043),i=t(33097),n=t.n(i),c=t(22166),o=t(89923),a=t(56483),r=t(64159),d=t(20554),u=t(77403),h=t(62560),x=t(94141),p=t(42967),m=t(20649),v=t(70579);const j=e=>{let{closeModalAndRefresh:l,selectedUser:t,selectedGroups:i,open:j}=e;const y=(0,d.jL)(),[g,b]=(0,s.useState)(!1),[f,A]=(0,s.useState)([]),[P,S]=(0,s.useState)([]),k=(0,c.d4)((e=>e.createUser.selectedPolicies));(0,s.useEffect)((()=>{if(j){if(1===(null===i||void 0===i?void 0:i.length))return void(1===(null===i||void 0===i?void 0:i.length)&&m.A.invoke("GET","/api/v1/group/".concat((0,a.nf)(i[0]))).then((e=>{const l=n()(e,"policy","");A(l.split(",")),S(l.split(",")),y((0,h.Gy)(l.split(",")))})).catch((e=>{y((0,r.Dy)(e)),b(!1)})));const e=n()(t,"policy",[]);A(e),S(e),y((0,h.Gy)(e))}}),[j,null===i||void 0===i?void 0:i.length,t]);const w=n()(t,"accessKey","");return(0,v.jsxs)(x.A,{onClose:()=>{l()},modalOpen:j,title:"Set Policies",children:[(0,v.jsxs)(o.Hbc,{withBorders:!1,containerPadding:!1,children:[(1===(null===i||void 0===i?void 0:i.length)||null!=t)&&(0,v.jsxs)(s.Fragment,{children:[(0,v.jsx)(o.EmB,{label:"Selected ".concat(null!==i?"Group":"User"),sx:{width:"100%"},children:null!==i?i[0]:w}),(0,v.jsx)(o.EmB,{label:"Current Policy",sx:{width:"100%"},children:f.join(", ")})]}),i&&(null===i||void 0===i?void 0:i.length)>1&&(0,v.jsx)(o.EmB,{label:"Selected Groups",sx:{width:"100%"},children:i.join(", ")}),(0,v.jsx)(o.xA9,{item:!0,xs:12,children:(0,v.jsx)(p.A,{selectedPolicy:P})})]}),(0,v.jsxs)(o.xA9,{item:!0,xs:12,sx:u.Uz.modalButtonBar,children:[(0,v.jsx)(o.$nd,{id:"reset",type:"button",variant:"regular",onClick:()=>{S(f),y((0,h.Gy)(f))},label:"Reset"}),(0,v.jsx)(o.$nd,{id:"save",type:"button",variant:"callAction",color:"primary",disabled:g,onClick:()=>{let e=null,s=null;null!==i?s=i:null!==t&&(e=[t.accessKey]||0),b(!0),m.A.invoke("PUT","/api/v1/set-policy-multi",{name:k,groups:s,users:e}).then((()=>{b(!1),l()})).catch((e=>{b(!1),y((0,r.Dy)(e))}))},label:"Save"})]}),g&&(0,v.jsx)(o.xA9,{item:!0,xs:12,children:(0,v.jsx)(o.z21,{})})]})}}}]); -//# sourceMappingURL=4705.2270c966.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/4705.2270c966.chunk.js.map b/web-app/build/static/js/4705.2270c966.chunk.js.map deleted file mode 100644 index 9699f4334..000000000 --- a/web-app/build/static/js/4705.2270c966.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/4705.2270c966.chunk.js","mappings":"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","sources":["screens/Console/Policies/PolicySelectors.tsx","screens/Console/Policies/SetPolicy.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Button, FormLayout, ReadBox, Grid, ProgressBar } from \"mds\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { User } from \"../Users/types\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport PolicySelectors from \"./PolicySelectors\";\nimport api from \"../../../common/api\";\n\ninterface ISetPolicyProps {\n closeModalAndRefresh: () => void;\n selectedUser: User | null;\n selectedGroups: string[] | null;\n open: boolean;\n}\n\nconst SetPolicy = ({\n closeModalAndRefresh,\n selectedUser,\n selectedGroups,\n open,\n}: ISetPolicyProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [loading, setLoading] = useState(false);\n const [actualPolicy, setActualPolicy] = useState([]);\n const [selectedPolicy, setSelectedPolicy] = useState([]);\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n const setPolicyAction = () => {\n let users = null;\n let groups = null;\n if (selectedGroups !== null) {\n groups = selectedGroups;\n } else {\n if (selectedUser !== null) {\n users = [selectedUser.accessKey] || [\" \"];\n }\n }\n\n setLoading(true);\n\n api\n .invoke(\"PUT\", `/api/v1/set-policy-multi`, {\n name: currentPolicies,\n groups: groups,\n users: users,\n })\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const fetchGroupInformation = () => {\n if (selectedGroups?.length === 1) {\n api\n .invoke(\"GET\", `/api/v1/group/${encodeURLString(selectedGroups[0])}`)\n .then((res: any) => {\n const groupPolicy: String = get(res, \"policy\", \"\");\n setActualPolicy(groupPolicy.split(\",\"));\n setSelectedPolicy(groupPolicy.split(\",\"));\n dispatch(setSelectedPolicies(groupPolicy.split(\",\")));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n setLoading(false);\n });\n }\n };\n\n const resetSelection = () => {\n setSelectedPolicy(actualPolicy);\n dispatch(setSelectedPolicies(actualPolicy));\n };\n\n useEffect(() => {\n if (open) {\n if (selectedGroups?.length === 1) {\n fetchGroupInformation();\n return;\n }\n\n const userPolicy: string[] = get(selectedUser, \"policy\", []);\n setActualPolicy(userPolicy);\n setSelectedPolicy(userPolicy);\n dispatch(setSelectedPolicies(userPolicy));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, selectedGroups?.length, selectedUser]);\n\n const userName = get(selectedUser, \"accessKey\", \"\");\n\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title=\"Set Policies\"\n >\n \n {(selectedGroups?.length === 1 || selectedUser != null) && (\n \n \n {selectedGroups !== null ? selectedGroups[0] : userName}\n \n \n {actualPolicy.join(\", \")}\n \n \n )}\n {selectedGroups && selectedGroups?.length > 1 && (\n \n {selectedGroups.join(\", \")}\n \n )}\n \n \n \n \n \n \n \n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default SetPolicy;\n"],"names":["_ref","noTitle","dispatch","useAppDispatch","records","setRecords","useState","loading","isLoading","filter","setFilter","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","useCallback","api","policies","listPolicies","then","res","_res$data$policies","data","sort","policySort","catch","err","setModalErrorSnackMessage","useEffect","filteredRecords","elementItem","name","includes","_jsxs","Grid","item","xs","className","children","_jsx","ProgressBar","length","Fragment","SearchBox","placeholder","onChange","value","label","DataTable","columns","elementKey","onSelect","e","targetD","target","checked","elements","push","element","setSelectedPolicies","selectedItems","entityName","idField","customPaperHeight","Box","sx","textAlign","padding","closeModalAndRefresh","selectedUser","selectedGroups","open","setLoading","actualPolicy","setActualPolicy","selectedPolicy","setSelectedPolicy","invoke","concat","encodeURLString","groupPolicy","get","split","userPolicy","userName","ModalWrapper","onClose","modalOpen","title","FormLayout","withBorders","containerPadding","ReadBox","width","join","PolicySelectors","modalStyleUtils","modalButtonBar","Button","id","type","variant","onClick","resetSelection","color","disabled","setPolicyAction","users","groups","accessKey"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/5851.9aeea951.chunk.js b/web-app/build/static/js/5851.9aeea951.chunk.js new file mode 100644 index 000000000..03b25da05 --- /dev/null +++ b/web-app/build/static/js/5851.9aeea951.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[5851],{85851:(e,t,n)=>{n.r(t),n.d(t,{default:()=>p});var o=n(65043),l=n(89923),s=n(64159),r=n(20554),c=n(58661),a=n(56629),i=n(53518),u=n(70579);const p=e=>{let{selectedGroups:t,deleteOpen:n,closeDeleteModalAndRefresh:p}=e;const h=(0,r.jL)(),[d,f]=(0,o.useState)(!1);if(!t)return null;const g=t.map((e=>(0,u.jsx)("div",{children:(0,u.jsx)("b",{children:e})},e)));return(0,u.jsx)(c.A,{title:"Delete Group".concat(t.length>1?"s":""),confirmText:"Delete",isOpen:n,titleIcon:(0,u.jsx)(l.xWY,{}),isLoading:d,onConfirm:()=>{for(let e of t)f(!0),a.F.group.removeGroup(e).then((e=>{p(!0)})).catch((async e=>{const t=await e.json();h((0,s.C9)((0,i.S)(t))),p(!1)})).finally((()=>f(!1)))},onClose:()=>p(!1),confirmationContent:(0,u.jsxs)(o.Fragment,{children:["Are you sure you want to delete the following"," ",1===t.length?"":t.length," group",t.length>1?"s?":"?",g]})})}}}]); +//# sourceMappingURL=5851.9aeea951.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/5851.9aeea951.chunk.js.map b/web-app/build/static/js/5851.9aeea951.chunk.js.map new file mode 100644 index 000000000..46e71eb64 --- /dev/null +++ b/web-app/build/static/js/5851.9aeea951.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/5851.9aeea951.chunk.js","mappings":"6NA+BA,MAwDA,EAxDoBA,IAIC,IAJA,eACnBC,EAAc,WACdC,EAAU,2BACVC,GACaH,EACb,MAAMI,GAAWC,EAAAA,EAAAA,OAEVC,EAAeC,IAAoBC,EAAAA,EAAAA,WAAkB,GAE5D,IAAKP,EACH,OAAO,KAET,MAiBMQ,EAAeR,EAAeS,KAAKC,IACvCC,EAAAA,EAAAA,KAAA,OAAAC,UACED,EAAAA,EAAAA,KAAA,KAAAC,SAAIF,KADIA,KAKZ,OACEC,EAAAA,EAAAA,KAACE,EAAAA,EAAa,CACZC,MAAK,eAAAC,OAAiBf,EAAegB,OAAS,EAAI,IAAM,IACxDC,YAAa,SACbC,OAAQjB,EACRkB,WAAWR,EAAAA,EAAAA,KAACS,EAAAA,IAAiB,IAC7BC,UAAWhB,EACXiB,UA9BmBC,KACrB,IAAK,IAAIb,KAASV,EAChBM,GAAiB,GACjBkB,EAAAA,EAAId,MACDe,YAAYf,GACZgB,MAAMC,IACLzB,GAA2B,EAAK,IAEjC0B,OAAMC,UACL,MAAMC,QAAaC,EAAIC,OACvB7B,GAAS8B,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,KAC7C5B,GAA2B,EAAM,IAElCiC,SAAQ,IAAM7B,GAAiB,IACpC,EAiBE8B,QArCYA,IAAMlC,GAA2B,GAsC7CmC,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAA3B,SAAA,CAAC,gDACsC,IACnB,IAA1BZ,EAAegB,OAAe,GAAKhB,EAAegB,OAAO,SACzDhB,EAAegB,OAAS,EAAI,KAAO,IACnCR,MAGL,C","sources":["screens/Console/Groups/DeleteGroup.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\n\ninterface IDeleteGroup {\n selectedGroups: string[];\n deleteOpen: boolean;\n closeDeleteModalAndRefresh: any;\n}\n\nconst DeleteGroup = ({\n selectedGroups,\n deleteOpen,\n closeDeleteModalAndRefresh,\n}: IDeleteGroup) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedGroups) {\n return null;\n }\n const onDeleteGroups = () => {\n for (let group of selectedGroups) {\n setLoadingDelete(true);\n api.group\n .removeGroup(group)\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n }\n };\n\n const renderGroups = selectedGroups.map((group) => (\n
\n {group}\n
\n ));\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={loadingDelete}\n onConfirm={onDeleteGroups}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the following{\" \"}\n {selectedGroups.length === 1 ? \"\" : selectedGroups.length} group\n {selectedGroups.length > 1 ? \"s?\" : \"?\"}\n {renderGroups}\n \n }\n />\n );\n};\n\nexport default DeleteGroup;\n"],"names":["_ref","selectedGroups","deleteOpen","closeDeleteModalAndRefresh","dispatch","useAppDispatch","loadingDelete","setLoadingDelete","useState","renderGroups","map","group","_jsx","children","ConfirmDialog","title","concat","length","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onDeleteGroups","api","removeGroup","then","_","catch","async","err","res","json","setErrorSnackMessage","errorToHandler","finally","onClose","confirmationContent","_jsxs","Fragment"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/5851.9d7a7887.chunk.js b/web-app/build/static/js/5851.9d7a7887.chunk.js deleted file mode 100644 index 2fa1dd9ec..000000000 --- a/web-app/build/static/js/5851.9d7a7887.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[5851],{85851:(e,t,n)=>{n.r(t),n.d(t,{default:()=>h});var o=n(65043),l=n(89923),s=n(56483),r=n(64159),c=n(20554),a=n(58661),i=n(56629),u=n(53518),p=n(70579);const h=e=>{let{selectedGroups:t,deleteOpen:n,closeDeleteModalAndRefresh:h}=e;const f=(0,c.jL)(),[d,g]=(0,o.useState)(!1);if(!t)return null;const j=t.map((e=>(0,p.jsx)("div",{children:(0,p.jsx)("b",{children:e})},e)));return(0,p.jsx)(a.A,{title:"Delete Group".concat(t.length>1?"s":""),confirmText:"Delete",isOpen:n,titleIcon:(0,p.jsx)(l.xWY,{}),isLoading:d,onConfirm:()=>{for(let e of t)g(!0),i.F.group.removeGroup((0,s.nf)(e)).then((e=>{h(!0)})).catch((async e=>{const t=await e.json();f((0,r.C9)((0,u.S)(t))),h(!1)})).finally((()=>g(!1)))},onClose:()=>h(!1),confirmationContent:(0,p.jsxs)(o.Fragment,{children:["Are you sure you want to delete the following"," ",1===t.length?"":t.length," group",t.length>1?"s?":"?",j]})})}}}]); -//# sourceMappingURL=5851.9d7a7887.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/5851.9d7a7887.chunk.js.map b/web-app/build/static/js/5851.9d7a7887.chunk.js.map deleted file mode 100644 index 334fa93c4..000000000 --- a/web-app/build/static/js/5851.9d7a7887.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/5851.9d7a7887.chunk.js","mappings":"wOAgCA,MAwDA,EAxDoBA,IAIC,IAJA,eACnBC,EAAc,WACdC,EAAU,2BACVC,GACaH,EACb,MAAMI,GAAWC,EAAAA,EAAAA,OAEVC,EAAeC,IAAoBC,EAAAA,EAAAA,WAAkB,GAE5D,IAAKP,EACH,OAAO,KAET,MAiBMQ,EAAeR,EAAeS,KAAKC,IACvCC,EAAAA,EAAAA,KAAA,OAAAC,UACED,EAAAA,EAAAA,KAAA,KAAAC,SAAIF,KADIA,KAKZ,OACEC,EAAAA,EAAAA,KAACE,EAAAA,EAAa,CACZC,MAAK,eAAAC,OAAiBf,EAAegB,OAAS,EAAI,IAAM,IACxDC,YAAa,SACbC,OAAQjB,EACRkB,WAAWR,EAAAA,EAAAA,KAACS,EAAAA,IAAiB,IAC7BC,UAAWhB,EACXiB,UA9BmBC,KACrB,IAAK,IAAIb,KAASV,EAChBM,GAAiB,GACjBkB,EAAAA,EAAId,MACDe,aAAYC,EAAAA,EAAAA,IAAgBhB,IAC5BiB,MAAMC,IACL1B,GAA2B,EAAK,IAEjC2B,OAAMC,UACL,MAAMC,QAAaC,EAAIC,OACvB9B,GAAS+B,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,KAC7C7B,GAA2B,EAAM,IAElCkC,SAAQ,IAAM9B,GAAiB,IACpC,EAiBE+B,QArCYA,IAAMnC,GAA2B,GAsC7CoC,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAA5B,SAAA,CAAC,gDACsC,IACnB,IAA1BZ,EAAegB,OAAe,GAAKhB,EAAegB,OAAO,SACzDhB,EAAegB,OAAS,EAAI,KAAO,IACnCR,MAGL,C","sources":["screens/Console/Groups/DeleteGroup.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\n\ninterface IDeleteGroup {\n selectedGroups: string[];\n deleteOpen: boolean;\n closeDeleteModalAndRefresh: any;\n}\n\nconst DeleteGroup = ({\n selectedGroups,\n deleteOpen,\n closeDeleteModalAndRefresh,\n}: IDeleteGroup) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedGroups) {\n return null;\n }\n const onDeleteGroups = () => {\n for (let group of selectedGroups) {\n setLoadingDelete(true);\n api.group\n .removeGroup(encodeURLString(group))\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n }\n };\n\n const renderGroups = selectedGroups.map((group) => (\n
\n {group}\n
\n ));\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={loadingDelete}\n onConfirm={onDeleteGroups}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the following{\" \"}\n {selectedGroups.length === 1 ? \"\" : selectedGroups.length} group\n {selectedGroups.length > 1 ? \"s?\" : \"?\"}\n {renderGroups}\n \n }\n />\n );\n};\n\nexport default DeleteGroup;\n"],"names":["_ref","selectedGroups","deleteOpen","closeDeleteModalAndRefresh","dispatch","useAppDispatch","loadingDelete","setLoadingDelete","useState","renderGroups","map","group","_jsx","children","ConfirmDialog","title","concat","length","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onDeleteGroups","api","removeGroup","encodeURLString","then","_","catch","async","err","res","json","setErrorSnackMessage","errorToHandler","finally","onClose","confirmationContent","_jsxs","Fragment"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/5941.4df5a08b.chunk.js b/web-app/build/static/js/5941.4df5a08b.chunk.js deleted file mode 100644 index fdd4de572..000000000 --- a/web-app/build/static/js/5941.4df5a08b.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[5941],{65941:(e,s,t)=>{t.r(s),t.d(s,{default:()=>p});var n=t(65043),o=t(25448),r=t(58661),i=t(89923),l=t(64159),c=t(20554),a=t(77938),d=t(99161),u=t(22166),b=t(56629),h=t(56483),v=t(70579);const p=e=>{let{closeDeleteModalAndRefresh:s,deleteOpen:t,selectedBucket:p,selectedObjects:j,versioning:g}=e;const x=(0,c.jL)(),f=()=>s(!0),[m,C]=(0,o.A)(f,(e=>x((0,l.C9)(e)))),[y,O]=(0,n.useState)(!1),[_,k]=(0,n.useState)(!1),w=(0,u.d4)((e=>e.objectBrowser.retentionConfig)),T=(0,a._)([p],[d.OV.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===w||void 0===w?void 0:w.mode);if(!j)return null;const A="Enabled"===(null===g||void 0===g?void 0:g.status)||"Suspended"===(null===g||void 0===g?void 0:g.status);return(0,v.jsx)(r.A,{title:"Delete Objects",confirmText:"Delete",isOpen:t,titleIcon:(0,v.jsx)(i.xWY,{}),isLoading:m,onConfirm:()=>{let e=[];for(let s=0;s{x((0,l.C9)({errorMessage:"Could not delete object. ".concat(e.statusText,". ").concat(w?"Please check retention mode and if object is WORM protected.":""),detailedError:""}))}))}else C("POST","/api/v1/buckets/".concat(p,"/delete-objects?all_versions=").concat(y).concat(_?"&bypass=true":""),e)},onClose:()=>s(!1),confirmationContent:(0,v.jsxs)(n.Fragment,{children:["Are you sure you want to delete the selected ",j.length," ","objects?"," ",A&&(0,v.jsxs)(n.Fragment,{children:[(0,v.jsx)("br",{}),(0,v.jsx)("br",{}),(0,v.jsx)(i.dOG,{label:"Delete All Versions",indicatorLabels:["Yes","No"],checked:y,value:"delete_versions",id:"delete-versions",name:"delete-versions",onChange:e=>{O(!y)},description:""}),T&&y&&(0,v.jsx)(n.Fragment,{children:(0,v.jsx)("div",{style:{marginTop:10},children:(0,v.jsx)(i.dOG,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:_,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:e=>{k(!_)},description:""})})}),y&&(0,v.jsxs)(n.Fragment,{children:[(0,v.jsxs)("div",{style:{marginTop:10,border:"#c83b51 1px solid",borderRadius:3,padding:5,backgroundColor:"#c83b5120",color:"#c83b51"},children:["This will remove the objects as well as all of their versions, ",(0,v.jsx)("br",{}),"This action is irreversible."]}),(0,v.jsx)("br",{}),"Are you sure you want to continue?"]})]})]})})}}}]); -//# sourceMappingURL=5941.4df5a08b.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/5941.4df5a08b.chunk.js.map b/web-app/build/static/js/5941.4df5a08b.chunk.js.map deleted file mode 100644 index b0420c314..000000000 --- a/web-app/build/static/js/5941.4df5a08b.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/5941.4df5a08b.chunk.js","mappings":"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","sources":["screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteMultipleObjects.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\nimport { api } from \"../../../../../../api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObjects: string[];\n selectedBucket: string;\n\n versioning: BucketVersioningResponse;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObjects,\n\n versioning,\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const [deleteVersions, setDeleteVersions] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n if (!selectedObjects) {\n return null;\n }\n const onConfirmDelete = () => {\n let toSend = [];\n for (let i = 0; i < selectedObjects.length; i++) {\n if (selectedObjects[i].endsWith(\"/\")) {\n toSend.push({\n path: selectedObjects[i],\n versionID: \"\",\n recursive: true,\n });\n } else {\n toSend.push({\n path: selectedObjects[i],\n versionID: \"\",\n recursive: false,\n });\n }\n }\n\n if (toSend) {\n if (selectedObjects.length === 1) {\n const firstObject = selectedObjects[0];\n api.buckets\n .deleteObject(selectedBucket, {\n prefix: encodeURLString(firstObject),\n all_versions: deleteVersions,\n bypass: bypassGovernance,\n recursive: firstObject.endsWith(\"/\"), //if it is just a prefix\n })\n .then(onDelSuccess)\n .catch((err) => {\n dispatch(\n setErrorSnackMessage({\n errorMessage: `Could not delete object. ${err.statusText}. ${\n retentionConfig\n ? \"Please check retention mode and if object is WORM protected.\"\n : \"\"\n }`,\n detailedError: \"\",\n }),\n );\n });\n } else {\n invokeDeleteApi(\n \"POST\",\n `/api/v1/buckets/${selectedBucket}/delete-objects?all_versions=${deleteVersions}${\n bypassGovernance ? \"&bypass=true\" : \"\"\n }`,\n toSend,\n );\n }\n }\n };\n\n const isVersionedDelete =\n versioning?.status === \"Enabled\" || versioning?.status === \"Suspended\";\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedObjects.length}{\" \"}\n objects?{\" \"}\n {isVersionedDelete && (\n \n
\n
\n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n {canBypass && deleteVersions && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n {deleteVersions && (\n \n \n This will remove the objects as well as all of their\n versions,
\n This action is irreversible.\n \n
\n Are you sure you want to continue?\n
\n )}\n
\n )}\n
\n }\n />\n );\n};\n\nexport default DeleteObject;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","selectedObjects","versioning","dispatch","useAppDispatch","onDelSuccess","deleteLoading","invokeDeleteApi","useApi","err","setErrorSnackMessage","deleteVersions","setDeleteVersions","useState","bypassGovernance","setBypassGovernance","retentionConfig","useSelector","state","objectBrowser","canBypass","hasPermission","IAM_SCOPES","S3_BYPASS_GOVERNANCE_RETENTION","mode","isVersionedDelete","status","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","toSend","i","length","endsWith","push","path","versionID","recursive","firstObject","api","buckets","deleteObject","prefix","encodeURLString","all_versions","bypass","then","catch","errorMessage","concat","statusText","detailedError","onClose","confirmationContent","_jsxs","Fragment","children","Switch","label","indicatorLabels","checked","value","id","name","onChange","e","description","style","marginTop","border","borderRadius","padding","backgroundColor","color"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/5941.c85331e3.chunk.js b/web-app/build/static/js/5941.c85331e3.chunk.js new file mode 100644 index 000000000..8458802fc --- /dev/null +++ b/web-app/build/static/js/5941.c85331e3.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[5941],{65941:(e,s,t)=>{t.r(s),t.d(s,{default:()=>v});var n=t(65043),o=t(25448),r=t(58661),i=t(89923),l=t(64159),c=t(20554),a=t(77938),d=t(99161),u=t(22166),b=t(56629),h=t(70579);const v=e=>{let{closeDeleteModalAndRefresh:s,deleteOpen:t,selectedBucket:v,selectedObjects:p,versioning:j}=e;const g=(0,c.jL)(),x=()=>s(!0),[f,m]=(0,o.A)(x,(e=>g((0,l.C9)(e)))),[C,y]=(0,n.useState)(!1),[O,_]=(0,n.useState)(!1),k=(0,u.d4)((e=>e.objectBrowser.retentionConfig)),w=(0,a._)([v],[d.OV.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===k||void 0===k?void 0:k.mode);if(!p)return null;const T="Enabled"===(null===j||void 0===j?void 0:j.status)||"Suspended"===(null===j||void 0===j?void 0:j.status);return(0,h.jsx)(r.A,{title:"Delete Objects",confirmText:"Delete",isOpen:t,titleIcon:(0,h.jsx)(i.xWY,{}),isLoading:f,onConfirm:()=>{let e=[];for(let s=0;s{g((0,l.C9)({errorMessage:"Could not delete object. ".concat(e.statusText,". ").concat(k?"Please check retention mode and if object is WORM protected.":""),detailedError:""}))}))}else m("POST","/api/v1/buckets/".concat(v,"/delete-objects?all_versions=").concat(C).concat(O?"&bypass=true":""),e)},onClose:()=>s(!1),confirmationContent:(0,h.jsxs)(n.Fragment,{children:["Are you sure you want to delete the selected ",p.length," ","objects?"," ",T&&(0,h.jsxs)(n.Fragment,{children:[(0,h.jsx)("br",{}),(0,h.jsx)("br",{}),(0,h.jsx)(i.dOG,{label:"Delete All Versions",indicatorLabels:["Yes","No"],checked:C,value:"delete_versions",id:"delete-versions",name:"delete-versions",onChange:e=>{y(!C)},description:""}),w&&C&&(0,h.jsx)(n.Fragment,{children:(0,h.jsx)("div",{style:{marginTop:10},children:(0,h.jsx)(i.dOG,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:O,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:e=>{_(!O)},description:""})})}),C&&(0,h.jsxs)(n.Fragment,{children:[(0,h.jsxs)("div",{style:{marginTop:10,border:"#c83b51 1px solid",borderRadius:3,padding:5,backgroundColor:"#c83b5120",color:"#c83b51"},children:["This will remove the objects as well as all of their versions, ",(0,h.jsx)("br",{}),"This action is irreversible."]}),(0,h.jsx)("br",{}),"Are you sure you want to continue?"]})]})]})})}}}]); +//# sourceMappingURL=5941.c85331e3.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/5941.c85331e3.chunk.js.map b/web-app/build/static/js/5941.c85331e3.chunk.js.map new file mode 100644 index 000000000..37484e9fd --- /dev/null +++ b/web-app/build/static/js/5941.c85331e3.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/5941.c85331e3.chunk.js","mappings":"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","sources":["screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteMultipleObjects.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\nimport { api } from \"../../../../../../api\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObjects: string[];\n selectedBucket: string;\n\n versioning: BucketVersioningResponse;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObjects,\n\n versioning,\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const [deleteVersions, setDeleteVersions] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n if (!selectedObjects) {\n return null;\n }\n const onConfirmDelete = () => {\n let toSend = [];\n for (let i = 0; i < selectedObjects.length; i++) {\n if (selectedObjects[i].endsWith(\"/\")) {\n toSend.push({\n path: selectedObjects[i],\n versionID: \"\",\n recursive: true,\n });\n } else {\n toSend.push({\n path: selectedObjects[i],\n versionID: \"\",\n recursive: false,\n });\n }\n }\n\n if (toSend) {\n if (selectedObjects.length === 1) {\n const firstObject = selectedObjects[0];\n api.buckets\n .deleteObject(selectedBucket, {\n prefix: firstObject,\n all_versions: deleteVersions,\n bypass: bypassGovernance,\n recursive: firstObject.endsWith(\"/\"), //if it is just a prefix\n })\n .then(onDelSuccess)\n .catch((err) => {\n dispatch(\n setErrorSnackMessage({\n errorMessage: `Could not delete object. ${err.statusText}. ${\n retentionConfig\n ? \"Please check retention mode and if object is WORM protected.\"\n : \"\"\n }`,\n detailedError: \"\",\n }),\n );\n });\n } else {\n invokeDeleteApi(\n \"POST\",\n `/api/v1/buckets/${selectedBucket}/delete-objects?all_versions=${deleteVersions}${\n bypassGovernance ? \"&bypass=true\" : \"\"\n }`,\n toSend,\n );\n }\n }\n };\n\n const isVersionedDelete =\n versioning?.status === \"Enabled\" || versioning?.status === \"Suspended\";\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedObjects.length}{\" \"}\n objects?{\" \"}\n {isVersionedDelete && (\n \n
\n
\n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n {canBypass && deleteVersions && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n {deleteVersions && (\n \n \n This will remove the objects as well as all of their\n versions,
\n This action is irreversible.\n \n
\n Are you sure you want to continue?\n
\n )}\n
\n )}\n
\n }\n />\n );\n};\n\nexport default DeleteObject;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","selectedObjects","versioning","dispatch","useAppDispatch","onDelSuccess","deleteLoading","invokeDeleteApi","useApi","err","setErrorSnackMessage","deleteVersions","setDeleteVersions","useState","bypassGovernance","setBypassGovernance","retentionConfig","useSelector","state","objectBrowser","canBypass","hasPermission","IAM_SCOPES","S3_BYPASS_GOVERNANCE_RETENTION","mode","isVersionedDelete","status","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","toSend","i","length","endsWith","push","path","versionID","recursive","firstObject","api","buckets","deleteObject","prefix","all_versions","bypass","then","catch","errorMessage","concat","statusText","detailedError","onClose","confirmationContent","_jsxs","Fragment","children","Switch","label","indicatorLabels","checked","value","id","name","onChange","e","description","style","marginTop","border","borderRadius","padding","backgroundColor","color"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/6065.e12fd403.chunk.js b/web-app/build/static/js/6065.e12fd403.chunk.js new file mode 100644 index 000000000..c1deeb622 --- /dev/null +++ b/web-app/build/static/js/6065.e12fd403.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[6065],{76065:(e,t,s)=>{s.r(t),s.d(t,{default:()=>S});var c=s(65043),n=s(22166),i=s(73216),a=s(89923),o=s(56629),r=s(53518),l=s(99161),d=s(77938),u=s(64159),m=s(39947),_=s(20554),h=s(70579);const S=()=>{const e=(0,_.jL)(),t=(0,i.Zp)(),s=(0,i.g)(),S=(0,n.d4)(m.Nx),[I,b]=(0,c.useState)("simple-tab-0"),[p,O]=(0,c.useState)(!0),[U,k]=(0,c.useState)([]),[A,E]=(0,c.useState)(!0),[C,L]=(0,c.useState)([]),N=s.bucketName||"",P=(0,d._)(N,[l.OV.ADMIN_LIST_USER_POLICIES]),x=(0,d._)(N,[l.OV.ADMIN_GET_POLICY,l.OV.ADMIN_LIST_USERS,l.OV.ADMIN_LIST_GROUPS],!0),f=(0,d._)(l.Ms,[l.OV.ADMIN_GET_USER]),g=(0,d._)(l.Ms,[l.OV.ADMIN_GET_POLICY,l.OV.ADMIN_LIST_USERS,l.OV.ADMIN_LIST_GROUPS]);(0,c.useEffect)((()=>{S&&(E(!0),O(!0))}),[S,E,O]);const M=[{type:"view",disableButtonFunction:()=>!g,onClick:e=>{t("".concat(l.zZ.POLICIES,"/").concat(encodeURIComponent(e.name)))}}],T=[{type:"view",disableButtonFunction:()=>!f,onClick:e=>{t("".concat(l.zZ.USERS,"/").concat(encodeURIComponent(e)))}}];return(0,c.useEffect)((()=>{A&&(x?o.F.bucketUsers.listUsersWithAccessToBucket(N).then((e=>{L(e.data),E(!1)})).catch((t=>{e((0,u.C9)((0,r.S)(t))),E(!1)})):E(!1))}),[A,e,N,x]),(0,c.useEffect)((()=>{e((0,u.ph)("bucket_detail_access"))}),[]),(0,c.useEffect)((()=>{p&&(P?o.F.bucketPolicy.listPoliciesWithBucket(N).then((e=>{k(e.data.policies),O(!1)})).catch((t=>{e((0,u.C9)((0,r.S)(t))),O(!1)})):O(!1))}),[p,e,N,P]),(0,h.jsxs)(c.Fragment,{children:[(0,h.jsx)(a._xt,{separator:!0,children:(0,h.jsx)(a.V7x,{content:(0,h.jsxs)(c.Fragment,{children:["Understand which"," ",(0,h.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/linux/administration/identity-access-management/policy-based-access-control.html#",children:"Policies"})," ","and"," ",(0,h.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/linux/administration/identity-access-management/minio-user-management.html",children:"Users"})," ","are authorized to access this Bucket."]}),placement:"right",children:"Access Audit"})}),(0,h.jsx)(a.tUM,{currentTabOrPath:I,onTabClick:e=>{b(e)},horizontal:!0,options:[{tabConfig:{label:"Policies",id:"simple-tab-0"},content:(0,h.jsx)(d.R,{scopes:[l.OV.ADMIN_LIST_USER_POLICIES],resource:N,errorProps:{disabled:!0},children:U&&(0,h.jsx)(a.bQt,{noBackground:!0,itemActions:M,columns:[{label:"Name",elementKey:"name"}],isLoading:p,records:U,entityName:"Policies",idField:"name"})})},{tabConfig:{label:"Users",id:"simple-tab-1"},content:(0,h.jsx)(d.R,{scopes:[l.OV.ADMIN_GET_POLICY,l.OV.ADMIN_LIST_USERS,l.OV.ADMIN_LIST_GROUPS],resource:N,matchAll:!0,errorProps:{disabled:!0},children:(0,h.jsx)(a.bQt,{noBackground:!0,itemActions:T,columns:[{label:"User",elementKey:"accessKey"}],isLoading:A,records:C,entityName:"Users",idField:"accessKey"})})}]})]})}}}]); +//# sourceMappingURL=6065.e12fd403.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/6065.e12fd403.chunk.js.map b/web-app/build/static/js/6065.e12fd403.chunk.js.map new file mode 100644 index 000000000..2b840fef4 --- /dev/null +++ b/web-app/build/static/js/6065.e12fd403.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/6065.e12fd403.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AccessDetailsPanel.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { DataTable, SectionTitle, Tabs, HelpTip } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_SCOPES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { Policy } from \"../../../../api/consoleApi\";\n\nconst AccessDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n\n const [curTab, setCurTab] = useState(\"simple-tab-0\");\n const [loadingPolicies, setLoadingPolicies] = useState(true);\n const [bucketPolicy, setBucketPolicy] = useState([]);\n const [loadingUsers, setLoadingUsers] = useState(true);\n const [bucketUsers, setBucketUsers] = useState([]);\n\n const bucketName = params.bucketName || \"\";\n\n const displayPoliciesList = hasPermission(bucketName, [\n IAM_SCOPES.ADMIN_LIST_USER_POLICIES,\n ]);\n\n const displayUsersList = hasPermission(\n bucketName,\n [\n IAM_SCOPES.ADMIN_GET_POLICY,\n IAM_SCOPES.ADMIN_LIST_USERS,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n ],\n true,\n );\n\n const viewUser = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_GET_USER,\n ]);\n const viewPolicy = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_GET_POLICY,\n IAM_SCOPES.ADMIN_LIST_USERS,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingUsers(true);\n setLoadingPolicies(true);\n }\n }, [loadingBucket, setLoadingUsers, setLoadingPolicies]);\n\n const PolicyActions = [\n {\n type: \"view\",\n disableButtonFunction: () => !viewPolicy,\n onClick: (policy: any) => {\n navigate(`${IAM_PAGES.POLICIES}/${encodeURIComponent(policy.name)}`);\n },\n },\n ];\n\n const userTableActions = [\n {\n type: \"view\",\n disableButtonFunction: () => !viewUser,\n onClick: (user: any) => {\n navigate(`${IAM_PAGES.USERS}/${encodeURIComponent(user)}`);\n },\n },\n ];\n\n useEffect(() => {\n if (loadingUsers) {\n if (displayUsersList) {\n api.bucketUsers\n .listUsersWithAccessToBucket(bucketName)\n .then((res) => {\n setBucketUsers(res.data);\n setLoadingUsers(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n setLoadingUsers(false);\n });\n } else {\n setLoadingUsers(false);\n }\n }\n }, [loadingUsers, dispatch, bucketName, displayUsersList]);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_detail_access\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingPolicies) {\n if (displayPoliciesList) {\n api.bucketPolicy\n .listPoliciesWithBucket(bucketName)\n .then((res) => {\n setBucketPolicy(res.data.policies);\n setLoadingPolicies(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n setLoadingPolicies(false);\n });\n } else {\n setLoadingPolicies(false);\n }\n }\n }, [loadingPolicies, dispatch, bucketName, displayPoliciesList]);\n\n return (\n \n \n \n Understand which{\" \"}\n \n Policies\n {\" \"}\n and{\" \"}\n \n Users\n {\" \"}\n are authorized to access this Bucket.\n \n }\n placement=\"right\"\n >\n Access Audit\n \n \n {\n setCurTab(newValue);\n }}\n horizontal\n options={[\n {\n tabConfig: { label: \"Policies\", id: \"simple-tab-0\" },\n content: (\n \n {bucketPolicy && (\n \n )}\n \n ),\n },\n {\n tabConfig: { label: \"Users\", id: \"simple-tab-1\" },\n content: (\n \n \n \n ),\n },\n ]}\n />\n \n );\n};\n\nexport default AccessDetails;\n"],"names":["AccessDetails","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","curTab","setCurTab","useState","loadingPolicies","setLoadingPolicies","bucketPolicy","setBucketPolicy","loadingUsers","setLoadingUsers","bucketUsers","setBucketUsers","bucketName","displayPoliciesList","hasPermission","IAM_SCOPES","ADMIN_LIST_USER_POLICIES","displayUsersList","ADMIN_GET_POLICY","ADMIN_LIST_USERS","ADMIN_LIST_GROUPS","viewUser","CONSOLE_UI_RESOURCE","ADMIN_GET_USER","viewPolicy","useEffect","PolicyActions","type","disableButtonFunction","onClick","policy","concat","IAM_PAGES","POLICIES","encodeURIComponent","name","userTableActions","user","USERS","api","listUsersWithAccessToBucket","then","res","data","catch","err","setErrorSnackMessage","errorToHandler","setHelpName","listPoliciesWithBucket","policies","_jsxs","Fragment","children","_jsx","SectionTitle","separator","HelpTip","content","target","href","placement","Tabs","currentTabOrPath","onTabClick","newValue","horizontal","options","tabConfig","label","id","SecureComponent","scopes","resource","errorProps","disabled","DataTable","noBackground","itemActions","columns","elementKey","isLoading","records","entityName","idField","matchAll"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/6065.f30b3ff2.chunk.js b/web-app/build/static/js/6065.f30b3ff2.chunk.js deleted file mode 100644 index 9c577eb3e..000000000 --- a/web-app/build/static/js/6065.f30b3ff2.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[6065],{76065:(e,t,s)=>{s.r(t),s.d(t,{default:()=>I});var c=s(65043),i=s(22166),n=s(73216),a=s(89923),o=s(56629),r=s(53518),l=s(99161),d=s(77938),u=s(56483),m=s(64159),_=s(39947),h=s(20554),S=s(70579);const I=()=>{const e=(0,h.jL)(),t=(0,n.Zp)(),s=(0,n.g)(),I=(0,i.d4)(_.Nx),[b,p]=(0,c.useState)("simple-tab-0"),[O,k]=(0,c.useState)(!0),[A,E]=(0,c.useState)([]),[U,f]=(0,c.useState)(!0),[L,N]=(0,c.useState)([]),P=s.bucketName||"",x=(0,d._)(P,[l.OV.ADMIN_LIST_USER_POLICIES]),g=(0,d._)(P,[l.OV.ADMIN_GET_POLICY,l.OV.ADMIN_LIST_USERS,l.OV.ADMIN_LIST_GROUPS],!0),C=(0,d._)(l.Ms,[l.OV.ADMIN_GET_USER]),M=(0,d._)(l.Ms,[l.OV.ADMIN_GET_POLICY,l.OV.ADMIN_LIST_USERS,l.OV.ADMIN_LIST_GROUPS]);(0,c.useEffect)((()=>{I&&(f(!0),k(!0))}),[I,f,k]);const T=[{type:"view",disableButtonFunction:()=>!M,onClick:e=>{t("".concat(l.zZ.POLICIES,"/").concat((0,u.nf)(e.name)))}}],V=[{type:"view",disableButtonFunction:()=>!C,onClick:e=>{t("".concat(l.zZ.USERS,"/").concat((0,u.nf)(e)))}}];return(0,c.useEffect)((()=>{U&&(g?o.F.bucketUsers.listUsersWithAccessToBucket(P).then((e=>{N(e.data),f(!1)})).catch((t=>{e((0,m.C9)((0,r.S)(t))),f(!1)})):f(!1))}),[U,e,P,g]),(0,c.useEffect)((()=>{e((0,m.ph)("bucket_detail_access"))}),[]),(0,c.useEffect)((()=>{O&&(x?o.F.bucketPolicy.listPoliciesWithBucket(P).then((e=>{E(e.data.policies),k(!1)})).catch((t=>{e((0,m.C9)((0,r.S)(t))),k(!1)})):k(!1))}),[O,e,P,x]),(0,S.jsxs)(c.Fragment,{children:[(0,S.jsx)(a._xt,{separator:!0,children:(0,S.jsx)(a.V7x,{content:(0,S.jsxs)(c.Fragment,{children:["Understand which"," ",(0,S.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/linux/administration/identity-access-management/policy-based-access-control.html#",children:"Policies"})," ","and"," ",(0,S.jsx)("a",{target:"blank",href:"https://min.io/docs/minio/linux/administration/identity-access-management/minio-user-management.html",children:"Users"})," ","are authorized to access this Bucket."]}),placement:"right",children:"Access Audit"})}),(0,S.jsx)(a.tUM,{currentTabOrPath:b,onTabClick:e=>{p(e)},horizontal:!0,options:[{tabConfig:{label:"Policies",id:"simple-tab-0"},content:(0,S.jsx)(d.R,{scopes:[l.OV.ADMIN_LIST_USER_POLICIES],resource:P,errorProps:{disabled:!0},children:A&&(0,S.jsx)(a.bQt,{noBackground:!0,itemActions:T,columns:[{label:"Name",elementKey:"name"}],isLoading:O,records:A,entityName:"Policies",idField:"name"})})},{tabConfig:{label:"Users",id:"simple-tab-1"},content:(0,S.jsx)(d.R,{scopes:[l.OV.ADMIN_GET_POLICY,l.OV.ADMIN_LIST_USERS,l.OV.ADMIN_LIST_GROUPS],resource:P,matchAll:!0,errorProps:{disabled:!0},children:(0,S.jsx)(a.bQt,{noBackground:!0,itemActions:V,columns:[{label:"User",elementKey:"accessKey"}],isLoading:U,records:L,entityName:"Users",idField:"accessKey"})})}]})]})}}}]); -//# sourceMappingURL=6065.f30b3ff2.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/6065.f30b3ff2.chunk.js.map b/web-app/build/static/js/6065.f30b3ff2.chunk.js.map deleted file mode 100644 index 1c015e876..000000000 --- a/web-app/build/static/js/6065.f30b3ff2.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/6065.f30b3ff2.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AccessDetailsPanel.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { DataTable, SectionTitle, Tabs, HelpTip } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_SCOPES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { encodeURLString } from \"../../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { Policy } from \"../../../../api/consoleApi\";\n\nconst AccessDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n\n const [curTab, setCurTab] = useState(\"simple-tab-0\");\n const [loadingPolicies, setLoadingPolicies] = useState(true);\n const [bucketPolicy, setBucketPolicy] = useState([]);\n const [loadingUsers, setLoadingUsers] = useState(true);\n const [bucketUsers, setBucketUsers] = useState([]);\n\n const bucketName = params.bucketName || \"\";\n\n const displayPoliciesList = hasPermission(bucketName, [\n IAM_SCOPES.ADMIN_LIST_USER_POLICIES,\n ]);\n\n const displayUsersList = hasPermission(\n bucketName,\n [\n IAM_SCOPES.ADMIN_GET_POLICY,\n IAM_SCOPES.ADMIN_LIST_USERS,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n ],\n true,\n );\n\n const viewUser = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_GET_USER,\n ]);\n const viewPolicy = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_GET_POLICY,\n IAM_SCOPES.ADMIN_LIST_USERS,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingUsers(true);\n setLoadingPolicies(true);\n }\n }, [loadingBucket, setLoadingUsers, setLoadingPolicies]);\n\n const PolicyActions = [\n {\n type: \"view\",\n disableButtonFunction: () => !viewPolicy,\n onClick: (policy: any) => {\n navigate(`${IAM_PAGES.POLICIES}/${encodeURLString(policy.name)}`);\n },\n },\n ];\n\n const userTableActions = [\n {\n type: \"view\",\n disableButtonFunction: () => !viewUser,\n onClick: (user: any) => {\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(user)}`);\n },\n },\n ];\n\n useEffect(() => {\n if (loadingUsers) {\n if (displayUsersList) {\n api.bucketUsers\n .listUsersWithAccessToBucket(bucketName)\n .then((res) => {\n setBucketUsers(res.data);\n setLoadingUsers(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n setLoadingUsers(false);\n });\n } else {\n setLoadingUsers(false);\n }\n }\n }, [loadingUsers, dispatch, bucketName, displayUsersList]);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_detail_access\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingPolicies) {\n if (displayPoliciesList) {\n api.bucketPolicy\n .listPoliciesWithBucket(bucketName)\n .then((res) => {\n setBucketPolicy(res.data.policies);\n setLoadingPolicies(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n setLoadingPolicies(false);\n });\n } else {\n setLoadingPolicies(false);\n }\n }\n }, [loadingPolicies, dispatch, bucketName, displayPoliciesList]);\n\n return (\n \n \n \n Understand which{\" \"}\n \n Policies\n {\" \"}\n and{\" \"}\n \n Users\n {\" \"}\n are authorized to access this Bucket.\n \n }\n placement=\"right\"\n >\n Access Audit\n \n \n {\n setCurTab(newValue);\n }}\n horizontal\n options={[\n {\n tabConfig: { label: \"Policies\", id: \"simple-tab-0\" },\n content: (\n \n {bucketPolicy && (\n \n )}\n \n ),\n },\n {\n tabConfig: { label: \"Users\", id: \"simple-tab-1\" },\n content: (\n \n \n \n ),\n },\n ]}\n />\n \n );\n};\n\nexport default AccessDetails;\n"],"names":["AccessDetails","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","curTab","setCurTab","useState","loadingPolicies","setLoadingPolicies","bucketPolicy","setBucketPolicy","loadingUsers","setLoadingUsers","bucketUsers","setBucketUsers","bucketName","displayPoliciesList","hasPermission","IAM_SCOPES","ADMIN_LIST_USER_POLICIES","displayUsersList","ADMIN_GET_POLICY","ADMIN_LIST_USERS","ADMIN_LIST_GROUPS","viewUser","CONSOLE_UI_RESOURCE","ADMIN_GET_USER","viewPolicy","useEffect","PolicyActions","type","disableButtonFunction","onClick","policy","concat","IAM_PAGES","POLICIES","encodeURLString","name","userTableActions","user","USERS","api","listUsersWithAccessToBucket","then","res","data","catch","err","setErrorSnackMessage","errorToHandler","setHelpName","listPoliciesWithBucket","policies","_jsxs","Fragment","children","_jsx","SectionTitle","separator","HelpTip","content","target","href","placement","Tabs","currentTabOrPath","onTabClick","newValue","horizontal","options","tabConfig","label","id","SecureComponent","scopes","resource","errorProps","disabled","DataTable","noBackground","itemActions","columns","elementKey","isLoading","records","entityName","idField","matchAll"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/7774.32142847.chunk.js b/web-app/build/static/js/7774.32142847.chunk.js new file mode 100644 index 000000000..cec64ac7d --- /dev/null +++ b/web-app/build/static/js/7774.32142847.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[7774],{97774:(e,t,a)=>{a.r(t),a.d(t,{default:()=>p});var n=a(65043),r=a(73216),s=a(22166),o=a(89923),l=a(94141),i=a(77403),c=a(20554),d=a(64159),h=a(70579);const p=(0,s.Ng)((e=>{let{objectBrowser:t}=e;return{simplePath:t.simplePath}}))((e=>{let{modalOpen:t,folderName:a,bucketName:p,onClose:u,simplePath:m,limitedSubPath:f}=e;const x=(0,c.jL)(),w=(0,r.Zp)(),[b,j]=(0,n.useState)(""),[C,g]=(0,n.useState)(!1),[y,P]=(0,n.useState)(p),v=(0,s.d4)((e=>e.objectBrowser.records));(0,n.useEffect)((()=>{if(m){const e="".concat(p).concat(p.endsWith("/")||m.startsWith("/")?"":"/").concat(m);P(e)}}),[m,p]);const k=()=>{let e="/";m&&(e=m.endsWith("/")?m:"".concat(m,"/"));if(-1!==v.findIndex((t=>t.name===e+b)))return void x((0,d.Dy)({errorMessage:"Folder cannot have the same name as an existing file",detailedError:""}));const t=b.split("/").filter((e=>""!==e.trim())).join("/");"/"===e.slice(0,1)&&(e=e.slice(1));const a="/browser/".concat(encodeURIComponent(p),"/").concat(encodeURIComponent("".concat(e).concat(t,"/")));w(a),u()};(0,n.useEffect)((()=>{let e=!0;0===b.trim().length&&(e=!1),g(e)}),[b]);return(0,h.jsx)(n.Fragment,{children:(0,h.jsx)(l.A,{modalOpen:t,title:"Choose or create a new path",onClose:u,titleIcon:(0,h.jsx)(o.DGR,{}),children:(0,h.jsxs)(o.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,h.jsxs)(o.azJ,{className:"inputItem",sx:{display:"flex",gap:8},children:[(0,h.jsx)("strong",{children:"Current Path:"})," ",(0,h.jsx)("br",{}),(0,h.jsx)(o.azJ,{sx:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",fontSize:14,textAlign:"left"},dir:"rtl",children:y})]}),(0,h.jsx)(o.cl_,{value:b,label:"New Folder Path",id:"folderPath",name:"folderPath",placeholder:"Enter the new Folder Path",onChange:e=>{j(e.target.value)},onKeyPress:e=>{"Enter"===e.code&&""!==b&&k()},required:!0,tooltip:f?"You may only have write access on a limited set of subpaths within this path. Please carefully review your User permissions to understand the paths to which you may write.":""}),(0,h.jsxs)(o.xA9,{item:!0,xs:12,sx:i.Uz.modalButtonBar,children:[(0,h.jsx)(o.$nd,{id:"clear",type:"button",color:"primary",variant:"regular",onClick:()=>{j("")},label:"Clear"}),(0,h.jsx)(o.$nd,{id:"create",type:"submit",variant:"callAction",disabled:!C,onClick:k,label:"Create"})]})]})})})}))}}]); +//# sourceMappingURL=7774.32142847.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/7774.32142847.chunk.js.map b/web-app/build/static/js/7774.32142847.chunk.js.map new file mode 100644 index 000000000..fb271c8e2 --- /dev/null +++ b/web-app/build/static/js/7774.32142847.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/7774.32142847.chunk.js","mappings":"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","sources":["screens/Console/Buckets/ListBuckets/Objects/ListObjects/CreatePathModal.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { connect, useSelector } from \"react-redux\";\nimport {\n Button,\n CreateNewPathIcon,\n InputBox,\n Grid,\n FormLayout,\n Box,\n} from \"mds\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { BucketObjectItem } from \"./types\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\n\ninterface ICreatePath {\n modalOpen: boolean;\n bucketName: string;\n folderName: string;\n onClose: () => any;\n simplePath: string | null;\n limitedSubPath?: boolean;\n}\n\nconst CreatePathModal = ({\n modalOpen,\n folderName,\n bucketName,\n onClose,\n simplePath,\n limitedSubPath,\n}: ICreatePath) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [pathUrl, setPathUrl] = useState(\"\");\n const [isFormValid, setIsFormValid] = useState(false);\n const [currentPath, setCurrentPath] = useState(bucketName);\n\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n\n useEffect(() => {\n if (simplePath) {\n const newPath = `${bucketName}${\n !bucketName.endsWith(\"/\") && !simplePath.startsWith(\"/\") ? \"/\" : \"\"\n }${simplePath}`;\n\n setCurrentPath(newPath);\n }\n }, [simplePath, bucketName]);\n\n const resetForm = () => {\n setPathUrl(\"\");\n };\n\n const createProcess = () => {\n let folderPath = \"/\";\n\n if (simplePath) {\n folderPath = simplePath.endsWith(\"/\") ? simplePath : `${simplePath}/`;\n }\n\n const sharesName = (record: BucketObjectItem) =>\n record.name === folderPath + pathUrl;\n\n if (records.findIndex(sharesName) !== -1) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"Folder cannot have the same name as an existing file\",\n detailedError: \"\",\n }),\n );\n return;\n }\n\n const cleanPathURL = pathUrl\n .split(\"/\")\n .filter((splitItem) => splitItem.trim() !== \"\")\n .join(\"/\");\n\n if (folderPath.slice(0, 1) === \"/\") {\n folderPath = folderPath.slice(1); //trim '/'\n }\n\n const newPath = `/browser/${encodeURIComponent(bucketName)}/${encodeURIComponent(\n `${folderPath}${cleanPathURL}/`,\n )}`;\n\n navigate(newPath);\n onClose();\n };\n\n useEffect(() => {\n let valid = true;\n if (pathUrl.trim().length === 0) {\n valid = false;\n }\n setIsFormValid(valid);\n }, [pathUrl]);\n\n const inputChange = (e: React.ChangeEvent) => {\n setPathUrl(e.target.value);\n };\n\n const keyPressed = (e: any) => {\n if (e.code === \"Enter\" && pathUrl !== \"\") {\n createProcess();\n }\n };\n\n return (\n \n }\n >\n \n \n Current Path:
\n \n {currentPath}\n
\n \n \n \n \n \n \n
\n \n
\n );\n};\n\nconst mapStateToProps = ({ objectBrowser }: AppState) => ({\n simplePath: objectBrowser.simplePath,\n});\n\nconst connector = connect(mapStateToProps);\n\nexport default connector(CreatePathModal);\n"],"names":["connect","_ref2","objectBrowser","simplePath","_ref","modalOpen","folderName","bucketName","onClose","limitedSubPath","dispatch","useAppDispatch","navigate","useNavigate","pathUrl","setPathUrl","useState","isFormValid","setIsFormValid","currentPath","setCurrentPath","records","useSelector","state","useEffect","newPath","concat","endsWith","startsWith","createProcess","folderPath","findIndex","record","name","setModalErrorSnackMessage","errorMessage","detailedError","cleanPathURL","split","filter","splitItem","trim","join","slice","encodeURIComponent","valid","length","_jsx","React","children","ModalWrapper","title","titleIcon","CreateNewPathIcon","_jsxs","FormLayout","withBorders","containerPadding","Box","className","sx","display","gap","textOverflow","whiteSpace","overflow","fontSize","textAlign","dir","InputBox","value","label","id","placeholder","onChange","e","target","onKeyPress","code","required","tooltip","Grid","item","xs","modalStyleUtils","modalButtonBar","Button","type","color","variant","onClick","resetForm","disabled"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/7774.4d23a595.chunk.js b/web-app/build/static/js/7774.4d23a595.chunk.js deleted file mode 100644 index cd71b2e98..000000000 --- a/web-app/build/static/js/7774.4d23a595.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[7774],{97774:(e,t,a)=>{a.r(t),a.d(t,{default:()=>u});var r=a(65043),s=a(73216),n=a(22166),l=a(89923),o=a(94141),i=a(77403),c=a(56483),d=a(20554),h=a(64159),p=a(70579);const u=(0,n.Ng)((e=>{let{objectBrowser:t}=e;return{simplePath:t.simplePath}}))((e=>{let{modalOpen:t,folderName:a,bucketName:u,onClose:m,simplePath:f,limitedSubPath:x}=e;const w=(0,d.jL)(),b=(0,s.Zp)(),[j,g]=(0,r.useState)(""),[y,P]=(0,r.useState)(!1),[v,C]=(0,r.useState)(u),k=(0,n.d4)((e=>e.objectBrowser.records));(0,r.useEffect)((()=>{if(f){const e="".concat(u).concat(u.endsWith("/")||f.startsWith("/")?"":"/").concat(f);C(e)}}),[f,u]);const S=()=>{let e="/";f&&(e=f.endsWith("/")?f:"".concat(f,"/"));if(-1!==k.findIndex((t=>t.name===e+j)))return void w((0,h.Dy)({errorMessage:"Folder cannot have the same name as an existing file",detailedError:""}));const t=j.split("/").filter((e=>""!==e.trim())).join("/");"/"===e.slice(0,1)&&(e=e.slice(1));const a="/browser/".concat(u,"/").concat((0,c.nf)("".concat(e).concat(t,"/")));b(a),m()};(0,r.useEffect)((()=>{let e=!0;0===j.trim().length&&(e=!1),P(e)}),[j]);return(0,p.jsx)(r.Fragment,{children:(0,p.jsx)(o.A,{modalOpen:t,title:"Choose or create a new path",onClose:m,titleIcon:(0,p.jsx)(l.DGR,{}),children:(0,p.jsxs)(l.Hbc,{withBorders:!1,containerPadding:!1,children:[(0,p.jsxs)(l.azJ,{className:"inputItem",sx:{display:"flex",gap:8},children:[(0,p.jsx)("strong",{children:"Current Path:"})," ",(0,p.jsx)("br",{}),(0,p.jsx)(l.azJ,{sx:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",fontSize:14,textAlign:"left"},dir:"rtl",children:v})]}),(0,p.jsx)(l.cl_,{value:j,label:"New Folder Path",id:"folderPath",name:"folderPath",placeholder:"Enter the new Folder Path",onChange:e=>{g(e.target.value)},onKeyPress:e=>{"Enter"===e.code&&""!==j&&S()},required:!0,tooltip:x?"You may only have write access on a limited set of subpaths within this path. Please carefully review your User permissions to understand the paths to which you may write.":""}),(0,p.jsxs)(l.xA9,{item:!0,xs:12,sx:i.Uz.modalButtonBar,children:[(0,p.jsx)(l.$nd,{id:"clear",type:"button",color:"primary",variant:"regular",onClick:()=>{g("")},label:"Clear"}),(0,p.jsx)(l.$nd,{id:"create",type:"submit",variant:"callAction",disabled:!y,onClick:S,label:"Create"})]})]})})})}))}}]); -//# sourceMappingURL=7774.4d23a595.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/7774.4d23a595.chunk.js.map b/web-app/build/static/js/7774.4d23a595.chunk.js.map deleted file mode 100644 index 3b87aaebe..000000000 --- a/web-app/build/static/js/7774.4d23a595.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/7774.4d23a595.chunk.js","mappings":"mPA2CA,MA2JA,GAFkBA,EAAAA,EAAAA,KAJMC,IAAA,IAAC,cAAEC,GAAyBD,EAAA,MAAM,CACxDE,WAAYD,EAAcC,WAC3B,GAID,EA3JwBC,IAOJ,IAPK,UACvBC,EAAS,WACTC,EAAU,WACVC,EAAU,QACVC,EAAO,WACPL,EAAU,eACVM,GACYL,EACZ,MAAMM,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,OAEVC,EAASC,IAAcC,EAAAA,EAAAA,UAAS,KAChCC,EAAaC,IAAkBF,EAAAA,EAAAA,WAAkB,IACjDG,EAAaC,IAAkBJ,EAAAA,EAAAA,UAAST,GAEzCc,GAAUC,EAAAA,EAAAA,KAAaC,GAAoBA,EAAMrB,cAAcmB,WAErEG,EAAAA,EAAAA,YAAU,KACR,GAAIrB,EAAY,CACd,MAAMsB,EAAO,GAAAC,OAAMnB,GAAUmB,OAC1BnB,EAAWoB,SAAS,MAASxB,EAAWyB,WAAW,KAAa,GAAN,KAAQF,OAClEvB,GAEHiB,EAAeK,EACjB,IACC,CAACtB,EAAYI,IAEhB,MAIMsB,EAAgBA,KACpB,IAAIC,EAAa,IAEb3B,IACF2B,EAAa3B,EAAWwB,SAAS,KAAOxB,EAAU,GAAAuB,OAAMvB,EAAU,MAMpE,IAAuC,IAAnCkB,EAAQU,WAHQC,GAClBA,EAAOC,OAASH,EAAahB,IAS7B,YANAJ,GACEwB,EAAAA,EAAAA,IAA0B,CACxBC,aAAc,uDACdC,cAAe,MAMrB,MAAMC,EAAevB,EAClBwB,MAAM,KACNC,QAAQC,GAAmC,KAArBA,EAAUC,SAChCC,KAAK,KAEuB,MAA3BZ,EAAWa,MAAM,EAAG,KACtBb,EAAaA,EAAWa,MAAM,IAGhC,MAAMlB,EAAO,YAAAC,OAAenB,EAAU,KAAAmB,QAAIkB,EAAAA,EAAAA,IAAgB,GAADlB,OACpDI,GAAUJ,OAAGW,EAAY,OAG9BzB,EAASa,GACTjB,GAAS,GAGXgB,EAAAA,EAAAA,YAAU,KACR,IAAIqB,GAAQ,EACkB,IAA1B/B,EAAQ2B,OAAOK,SACjBD,GAAQ,GAEV3B,EAAe2B,EAAM,GACpB,CAAC/B,IAYJ,OACEiC,EAAAA,EAAAA,KAACC,EAAAA,SAAc,CAAAC,UACbF,EAAAA,EAAAA,KAACG,EAAAA,EAAY,CACX7C,UAAWA,EACX8C,MAAM,8BACN3C,QAASA,EACT4C,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAAIJ,UAEjCK,EAAAA,EAAAA,MAACC,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMR,SAAA,EACtDK,EAAAA,EAAAA,MAACI,EAAAA,IAAG,CAACC,UAAW,YAAaC,GAAI,CAAEC,QAAS,OAAQC,IAAK,GAAIb,SAAA,EAC3DF,EAAAA,EAAAA,KAAA,UAAAE,SAAQ,kBAAsB,KAACF,EAAAA,EAAAA,KAAA,UAC/BA,EAAAA,EAAAA,KAACW,EAAAA,IAAG,CACFE,GAAI,CACFG,aAAc,WACdC,WAAY,SACZC,SAAU,SACVC,SAAU,GACVC,UAAW,QAEbC,IAAK,MAAMnB,SAEV9B,QAGL4B,EAAAA,EAAAA,KAACsB,EAAAA,IAAQ,CACPC,MAAOxD,EACPyD,MAAO,kBACPC,GAAI,aACJvC,KAAM,aACNwC,YAAa,4BACbC,SAxCWC,IACnB5D,EAAW4D,EAAEC,OAAON,MAAM,EAwClBO,WArCUF,IACH,UAAXA,EAAEG,MAAgC,KAAZhE,GACxBe,GACF,EAmCQkD,UAAQ,EACRC,QACGvE,EACC,8KACF,MAGJ6C,EAAAA,EAAAA,MAAC2B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIvB,GAAIwB,EAAAA,GAAgBC,eAAepC,SAAA,EACpDF,EAAAA,EAAAA,KAACuC,EAAAA,IAAM,CACLd,GAAI,QACJe,KAAK,SACLC,MAAM,UACNC,QAAQ,UACRC,QAxGMC,KAChB5E,EAAW,GAAG,EAwGJwD,MAAO,WAETxB,EAAAA,EAAAA,KAACuC,EAAAA,IAAM,CACLd,GAAI,SACJe,KAAK,SACLE,QAAQ,aACRG,UAAW3E,EACXyE,QAAS7D,EACT0C,MAAO,oBAKA,G","sources":["screens/Console/Buckets/ListBuckets/Objects/ListObjects/CreatePathModal.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { connect, useSelector } from \"react-redux\";\nimport {\n Button,\n CreateNewPathIcon,\n InputBox,\n Grid,\n FormLayout,\n Box,\n} from \"mds\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport { BucketObjectItem } from \"./types\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\n\ninterface ICreatePath {\n modalOpen: boolean;\n bucketName: string;\n folderName: string;\n onClose: () => any;\n simplePath: string | null;\n limitedSubPath?: boolean;\n}\n\nconst CreatePathModal = ({\n modalOpen,\n folderName,\n bucketName,\n onClose,\n simplePath,\n limitedSubPath,\n}: ICreatePath) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [pathUrl, setPathUrl] = useState(\"\");\n const [isFormValid, setIsFormValid] = useState(false);\n const [currentPath, setCurrentPath] = useState(bucketName);\n\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n\n useEffect(() => {\n if (simplePath) {\n const newPath = `${bucketName}${\n !bucketName.endsWith(\"/\") && !simplePath.startsWith(\"/\") ? \"/\" : \"\"\n }${simplePath}`;\n\n setCurrentPath(newPath);\n }\n }, [simplePath, bucketName]);\n\n const resetForm = () => {\n setPathUrl(\"\");\n };\n\n const createProcess = () => {\n let folderPath = \"/\";\n\n if (simplePath) {\n folderPath = simplePath.endsWith(\"/\") ? simplePath : `${simplePath}/`;\n }\n\n const sharesName = (record: BucketObjectItem) =>\n record.name === folderPath + pathUrl;\n\n if (records.findIndex(sharesName) !== -1) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"Folder cannot have the same name as an existing file\",\n detailedError: \"\",\n }),\n );\n return;\n }\n\n const cleanPathURL = pathUrl\n .split(\"/\")\n .filter((splitItem) => splitItem.trim() !== \"\")\n .join(\"/\");\n\n if (folderPath.slice(0, 1) === \"/\") {\n folderPath = folderPath.slice(1); //trim '/'\n }\n\n const newPath = `/browser/${bucketName}/${encodeURLString(\n `${folderPath}${cleanPathURL}/`,\n )}`;\n\n navigate(newPath);\n onClose();\n };\n\n useEffect(() => {\n let valid = true;\n if (pathUrl.trim().length === 0) {\n valid = false;\n }\n setIsFormValid(valid);\n }, [pathUrl]);\n\n const inputChange = (e: React.ChangeEvent) => {\n setPathUrl(e.target.value);\n };\n\n const keyPressed = (e: any) => {\n if (e.code === \"Enter\" && pathUrl !== \"\") {\n createProcess();\n }\n };\n\n return (\n \n }\n >\n \n \n Current Path:
\n \n {currentPath}\n
\n \n \n \n \n \n \n
\n \n
\n );\n};\n\nconst mapStateToProps = ({ objectBrowser }: AppState) => ({\n simplePath: objectBrowser.simplePath,\n});\n\nconst connector = connect(mapStateToProps);\n\nexport default connector(CreatePathModal);\n"],"names":["connect","_ref2","objectBrowser","simplePath","_ref","modalOpen","folderName","bucketName","onClose","limitedSubPath","dispatch","useAppDispatch","navigate","useNavigate","pathUrl","setPathUrl","useState","isFormValid","setIsFormValid","currentPath","setCurrentPath","records","useSelector","state","useEffect","newPath","concat","endsWith","startsWith","createProcess","folderPath","findIndex","record","name","setModalErrorSnackMessage","errorMessage","detailedError","cleanPathURL","split","filter","splitItem","trim","join","slice","encodeURLString","valid","length","_jsx","React","children","ModalWrapper","title","titleIcon","CreateNewPathIcon","_jsxs","FormLayout","withBorders","containerPadding","Box","className","sx","display","gap","textOverflow","whiteSpace","overflow","fontSize","textAlign","dir","InputBox","value","label","id","placeholder","onChange","e","target","onKeyPress","code","required","tooltip","Grid","item","xs","modalStyleUtils","modalButtonBar","Button","type","color","variant","onClick","resetForm","disabled"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/8311.d87242df.chunk.js b/web-app/build/static/js/8311.d87242df.chunk.js new file mode 100644 index 000000000..223e69e51 --- /dev/null +++ b/web-app/build/static/js/8311.d87242df.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[8311],{72237:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(65043),i=n(70579);const s=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,i.jsx)(r.Suspense,{fallback:t,children:(0,i.jsx)(e,{...n})})}}},72271:(e,t,n)=>{n.d(t,{A:()=>s});n(65043);var r=n(89923),i=n(70579);const s=e=>{let{iconComponent:t,entity:n}=e;return(0,i.jsx)(r.xA9,{container:!0,children:(0,i.jsx)(r.xA9,{item:!0,xs:12,children:(0,i.jsx)(r.lVp,{title:"".concat(n," not available"),iconComponent:t,help:(0,i.jsxs)(r.azJ,{sx:{fontSize:"14px",["@media (max-width: ".concat(r.nmC.sm,"px)")]:{display:"flex",flexFlow:"column"}},children:[(0,i.jsx)("span",{children:"This feature is not available for a single-disk setup.\xa0"}),(0,i.jsxs)("span",{children:["Please deploy a server in"," ",(0,i.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html?ref=con",target:"_blank",rel:"noopener",children:"Distributed Mode"})," ","to use this feature."]})]})})})})}},18311:(e,t,n)=>{n.r(t),n.d(t,{default:()=>v});var r=n(65043),i=n(33097),s=n.n(i),o=n(22166),l=n(73216),a=n(89923),c=n(56629),d=n(53518),x=n(77403),u=n(99161),m=n(77938),p=n(20755),j=n(64159),h=n(20554),g=n(64681),b=n(72237),y=n(72271),f=n(6681),F=n(48793),T=n(55968),A=n(58661),C=n(70579);const O=e=>{let{open:t,closeModalAndRefresh:n,tierName:i}=e;const s=(0,h.jL)();return(0,C.jsx)(A.A,{title:"Delete Tier",confirmText:"Delete",isOpen:t,titleIcon:(0,C.jsx)(a.$rg,{}),isLoading:!1,onConfirm:()=>{""!==i?c.F.admin.removeTier(i).then((()=>{n(!0)})).catch((e=>{e.json().then((e=>{s((0,j.C9)({errorMessage:e.message,detailedError:e.detailedMessage}))})),n(!1)})):(0,j.C9)({errorMessage:"There was an error deleting the tier",detailedError:""})},onClose:()=>n(!1),confirmationContent:(0,C.jsxs)(r.Fragment,{children:["Are you sure you want to delete the tier ",(0,C.jsx)("strong",{children:i}),"?",(0,C.jsx)("br",{}),(0,C.jsx)("br",{}),(0,C.jsx)("strong",{children:" Please note"}),(0,C.jsx)("br",{})," Only empty tiers can be deleted. If the tier has had objects transitioned into it, it cannot be removed."]})})},I=(0,b.A)(r.lazy((()=>n.e(696).then(n.bind(n,20696))))),v=()=>{const e=(0,h.jL)(),t=(0,l.Zp)(),n=(0,o.d4)(j.Rq),[i,b]=(0,r.useState)([]),[A,v]=(0,r.useState)(""),[M,S]=(0,r.useState)(!0),[E,_]=(0,r.useState)(!1),[w,N]=(0,r.useState)(!1),[k,R]=(0,r.useState)({type:"unsupported",status:!1}),L=(0,m._)(u.Ms,[u.OV.ADMIN_SET_TIER]);(0,r.useEffect)((()=>{if(M)if(n){(()=>{c.F.admin.tiersList().then((e=>{b(e.data.items||[]),S(!1)})).catch((t=>{e((0,j.C9)((0,d.S)(t.error))),S(!1)}))})()}else S(!1)}),[M,e,n]);const D=i.filter((e=>{if(""===A)return!0;const t=s()(e,"".concat(e.type,".name"),""),n=s()(e,"type","");return t.indexOf(A)>=0||n.indexOf(A)>=0})),z=()=>{t(u.zZ.TIERS_ADD)};return(0,r.useEffect)((()=>{e((0,j.ph)("list-tiers-configuration"))}),[]),(0,C.jsxs)(r.Fragment,{children:[E&&(0,C.jsx)(I,{open:E,tierData:k,closeModalAndRefresh:()=>{_(!1)}}),w&&(0,C.jsx)(O,{open:w,tierName:s()(k,"".concat(k.type,".name"),""),closeModalAndRefresh:()=>{N(!1),S(!0)}}),(0,C.jsx)(F.A,{label:"Tiers",actions:(0,C.jsx)(T.A,{})}),(0,C.jsx)(a.Mxu,{children:n?(0,C.jsxs)(r.Fragment,{children:[(0,C.jsxs)(a.xA9,{item:!0,xs:12,sx:x._0.actionsTray,children:[(0,C.jsx)(g.A,{placeholder:"Filter",onChange:v,value:A,sx:{marginRight:"auto",maxWidth:380}}),(0,C.jsxs)(a.azJ,{sx:{display:"flex",flexWrap:"nowrap",gap:5},children:[(0,C.jsx)(a.$nd,{id:"refresh-list",icon:(0,C.jsx)(a.fNY,{}),label:"Refresh List",onClick:()=>{S(!0)}}),(0,C.jsx)(f.A,{tooltip:L?"":"You require additional permissions in order to create a new Tier. Please ask your MinIO administrator to grant you "+u.OV.ADMIN_SET_TIER+" permission in order to create a Tier.",children:(0,C.jsx)(m.R,{scopes:[u.OV.ADMIN_SET_TIER],resource:u.Ms,errorProps:{disabled:!0},children:(0,C.jsx)(a.$nd,{id:"add-tier",icon:(0,C.jsx)(a.REV,{}),label:"Create Tier",onClick:z,variant:"callAction"})})})]})]}),M&&(0,C.jsx)(a.z21,{}),!M&&(0,C.jsxs)(r.Fragment,{children:[i.length>0&&(0,C.jsxs)(r.Fragment,{children:[(0,C.jsx)(a.xA9,{item:!0,xs:12,children:(0,C.jsx)(m.R,{scopes:[u.OV.ADMIN_LIST_TIERS],resource:u.Ms,errorProps:{disabled:!0},children:(0,C.jsx)(a.bQt,{itemActions:[{type:"edit",onClick:e=>{R(e),_(!0)}},{type:"delete",isDisabled:!(0,m._)("*",u.pC[u.ac.BUCKET_LIFECYCLE],!0),onClick:e=>{R(e),N(!0)}}],columns:[{label:"Tier Name",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".name"),"");return null!==t?(0,C.jsx)("b",{children:t}):""},renderFullObject:!0},{label:"Status",elementKey:"status",renderFunction:e=>e?(0,C.jsxs)(a.xA9,{container:!0,sx:{display:"flex",alignItems:"center",justifyItems:"start",color:"#4CCB92",fontSize:"8px",flexDirection:"column"},children:[(0,C.jsx)(a.JrA,{style:{fill:"#4CCB92",width:14,height:14}}),"ONLINE"]}):(0,C.jsxs)(a.xA9,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",color:"#C83B51",fontSize:"8px"},children:[(0,C.jsx)(a.lgW,{style:{fill:"#C83B51",width:14,height:14}}),"OFFLINE"]}),width:50},{label:"Type",elementKey:"type",renderFunction:e=>{const{logoXs:t}=p._T.find((t=>t.serviceName===e))||{};return e?(0,C.jsx)(a.azJ,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"18px",height:"22px"}},children:t}):""},width:50},{label:"Endpoint",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".endpoint"),"");return null!==t?t:""},renderFullObject:!0},{label:"Bucket",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".bucket"),"");return null!==t?t:""},renderFullObject:!0},{label:"Prefix",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".prefix"),"");return null!==t?t:""},renderFullObject:!0},{label:"Region",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".region"),"");return null!==t?t:""},renderFullObject:!0},{label:"Usage",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".usage"),"");return null!==t?t:""},renderFullObject:!0},{label:"Objects",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".objects"),"");return null!==t?t:""},renderFullObject:!0},{label:"Versions",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".versions"),"");return null!==t?t:""},renderFullObject:!0}],isLoading:M,records:D,entityName:"Tiers",idField:"service_name",customPaperHeight:"400px"})})}),(0,C.jsx)(a.xA9,{item:!0,xs:12,sx:{marginTop:"15px"},children:(0,C.jsx)(a.lVp,{title:"Learn more about TIERS",iconComponent:(0,C.jsx)(a.fAn,{}),help:(0,C.jsxs)(r.Fragment,{children:["Tiers are used by the MinIO Object Lifecycle Management which allows creating rules for time or date based automatic transition or expiry of objects. For object transition, MinIO automatically moves the object to a configured remote storage tier.",(0,C.jsx)("br",{}),(0,C.jsx)("br",{}),"You can learn more at our"," ",(0,C.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/object-management/object-lifecycle-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]}),0===i.length&&(0,C.jsx)(a.lVp,{title:"Tiers",iconComponent:(0,C.jsx)(a.fAn,{}),help:(0,C.jsxs)(r.Fragment,{children:["Tiers are used by the MinIO Object Lifecycle Management which allows creating rules for time or date based automatic transition or expiry of objects. For object transition, MinIO automatically moves the object to a configured remote storage tier.",(0,C.jsx)("br",{}),(0,C.jsx)("br",{}),L?(0,C.jsxs)("div",{children:["To get started,"," ",(0,C.jsx)(a.t53,{isLoading:!1,label:"",onClick:z,children:"Create Tier"}),"."]}):""]})})]})]}):(0,C.jsx)(y.A,{entity:"Tiers",iconComponent:(0,C.jsx)(a.zEc,{})})})]})}},20755:(e,t,n)=>{n.d(t,{_T:()=>c,pW:()=>l,qA:()=>o,vH:()=>s,y:()=>a});var r=n(89923),i=n(70579);const s="minio",o="gcs",l="s3",a="azure",c=[{serviceName:s,targetTitle:"MinIO",logo:(0,i.jsx)(r.Wh8,{}),logoXs:(0,i.jsx)(r.$2v,{})},{serviceName:o,targetTitle:"Google Cloud Storage",logo:(0,i.jsx)(r.F7U,{}),logoXs:(0,i.jsx)(r.gwF,{})},{serviceName:l,targetTitle:"AWS S3",logo:(0,i.jsx)(r._tF,{}),logoXs:(0,i.jsx)(r.ZZX,{})},{serviceName:a,targetTitle:"Azure",logo:(0,i.jsx)(r.Nmx,{}),logoXs:(0,i.jsx)(r.Ubg,{})}]}}]); +//# sourceMappingURL=8311.d87242df.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/8311.d87242df.chunk.js.map b/web-app/build/static/js/8311.d87242df.chunk.js.map new file mode 100644 index 000000000..59f0e8abd --- /dev/null +++ b/web-app/build/static/js/8311.d87242df.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/8311.d87242df.chunk.js","mappings":"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","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/DistributedOnly/DistributedOnly.tsx","screens/Console/Configurations/TiersConfiguration/DeleteTierConfirmModal.tsx","screens/Console/Configurations/TiersConfiguration/ListTiersConfiguration.tsx","screens/Console/Configurations/TiersConfiguration/utils.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { HelpBox, Box, Grid, breakPoints } from \"mds\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n \n \n This feature is not available for a single-disk setup. \n \n \n Please deploy a server in{\" \"}\n \n Distributed Mode\n {\" \"}\n to use this feature.\n \n \n }\n />\n \n \n );\n};\n\nexport default DistributedOnly;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2024 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { ConfirmModalIcon } from \"mds\";\nimport { api } from \"api\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ConfirmDialog from \"screens/Console/Common/ModalWrapper/ConfirmDialog\";\n\ninterface ITierDeleteModal {\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => any;\n tierName: string;\n}\n\nconst DeleteTierConfirmModal = ({\n open,\n closeModalAndRefresh,\n tierName,\n}: ITierDeleteModal) => {\n const dispatch = useAppDispatch();\n\n const deleteTier = () => {\n if (tierName !== \"\") {\n api.admin\n .removeTier(tierName)\n .then(() => {\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n err.json().then((body: any) => {\n dispatch(\n setErrorSnackMessage({\n errorMessage: body.message,\n detailedError: body.detailedMessage,\n }),\n );\n });\n closeModalAndRefresh(false);\n });\n } else {\n setErrorSnackMessage({\n errorMessage: \"There was an error deleting the tier\",\n detailedError: \"\",\n });\n }\n };\n\n return (\n }\n isLoading={false}\n onConfirm={() => deleteTier()}\n onClose={() => closeModalAndRefresh(false)}\n confirmationContent={\n \n Are you sure you want to delete the tier {tierName}?\n
\n
\n Please note\n
Only empty tiers can be deleted. If the tier has had objects\n transitioned into it, it cannot be removed.\n
\n }\n />\n );\n};\n\nexport default DeleteTierConfirmModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n ActionLink,\n AddIcon,\n Box,\n Button,\n DataTable,\n Grid,\n HelpBox,\n PageLayout,\n ProgressBar,\n RefreshIcon,\n TierOfflineIcon,\n TierOnlineIcon,\n TiersIcon,\n TiersNotAvailableIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Tier } from \"api/consoleApi\";\nimport { actionsTray } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { tierTypes } from \"./utils\";\n\nimport {\n selDistSet,\n setErrorSnackMessage,\n setHelpName,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport SearchBox from \"../../Common/SearchBox\";\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport DistributedOnly from \"../../Common/DistributedOnly/DistributedOnly\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\nimport DeleteTierConfirmModal from \"./DeleteTierConfirmModal\";\n\nconst UpdateTierCredentialsModal = withSuspense(\n React.lazy(() => import(\"./UpdateTierCredentialsModal\")),\n);\n\nconst ListTiersConfiguration = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const distributedSetup = useSelector(selDistSet);\n const [records, setRecords] = useState([]);\n const [filter, setFilter] = useState(\"\");\n const [isLoading, setIsLoading] = useState(true);\n const [updateCredentialsOpen, setUpdateCredentialsOpen] =\n useState(false);\n\n const [deleteTierModalOpen, setDeleteTierModalOpen] =\n useState(false);\n const [selectedTier, setSelectedTier] = useState({\n type: \"unsupported\",\n status: false,\n });\n const hasSetTier = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_SET_TIER,\n ]);\n\n useEffect(() => {\n if (isLoading) {\n if (distributedSetup) {\n const fetchRecords = () => {\n api.admin\n .tiersList()\n .then((res) => {\n setRecords(res.data.items || []);\n setIsLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setIsLoading(false);\n });\n };\n fetchRecords();\n } else {\n setIsLoading(false);\n }\n }\n }, [isLoading, dispatch, distributedSetup]);\n\n const filteredRecords = records.filter((b: Tier) => {\n if (filter === \"\") {\n return true;\n }\n const getItemName = get(b, `${b.type}.name`, \"\");\n const getItemType = get(b, `type`, \"\");\n\n return getItemName.indexOf(filter) >= 0 || getItemType.indexOf(filter) >= 0;\n });\n\n const addTier = () => {\n navigate(IAM_PAGES.TIERS_ADD);\n };\n\n const renderTierName = (item: Tier) => {\n const name = get(item, `${item.type}.name`, \"\");\n\n if (name !== null) {\n return {name};\n }\n\n return \"\";\n };\n\n const renderTierType = (item: string) => {\n const { logoXs } =\n tierTypes.find((tierConf) => tierConf.serviceName === item) || {};\n if (item) {\n return (\n \n {logoXs}\n \n );\n }\n return \"\";\n };\n\n const renderTierStatus = (item: boolean) => {\n if (item) {\n return (\n \n \n ONLINE\n \n );\n }\n return (\n \n \n OFFLINE\n \n );\n };\n\n const renderTierPrefix = (item: Tier) => {\n const prefix = get(item, `${item.type}.prefix`, \"\");\n\n if (prefix !== null) {\n return prefix;\n }\n\n return \"\";\n };\n\n const renderTierEndpoint = (item: Tier) => {\n const endpoint = get(item, `${item.type}.endpoint`, \"\");\n\n if (endpoint !== null) {\n return endpoint;\n }\n\n return \"\";\n };\n\n const renderTierBucket = (item: Tier) => {\n const bucket = get(item, `${item.type}.bucket`, \"\");\n\n if (bucket !== null) {\n return bucket;\n }\n\n return \"\";\n };\n\n const renderTierRegion = (item: Tier) => {\n const region = get(item, `${item.type}.region`, \"\");\n\n if (region !== null) {\n return region;\n }\n\n return \"\";\n };\n\n const renderTierUsage = (item: Tier) => {\n const endpoint = get(item, `${item.type}.usage`, \"\");\n\n if (endpoint !== null) {\n return endpoint;\n }\n\n return \"\";\n };\n\n const renderTierObjects = (item: Tier) => {\n const endpoint = get(item, `${item.type}.objects`, \"\");\n\n if (endpoint !== null) {\n return endpoint;\n }\n\n return \"\";\n };\n\n const renderTierVersions = (item: Tier) => {\n const endpoint = get(item, `${item.type}.versions`, \"\");\n\n if (endpoint !== null) {\n return endpoint;\n }\n\n return \"\";\n };\n\n const closeTierCredentials = () => {\n setUpdateCredentialsOpen(false);\n };\n const closeDeleteTier = () => {\n setDeleteTierModalOpen(false);\n setIsLoading(true);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"list-tiers-configuration\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {updateCredentialsOpen && (\n \n )}\n {deleteTierModalOpen && (\n \n )}\n } />\n\n \n {!distributedSetup ? (\n }\n />\n ) : (\n \n \n \n\n \n }\n label={`Refresh List`}\n onClick={() => {\n setIsLoading(true);\n }}\n />\n \n \n }\n label={`Create Tier`}\n onClick={addTier}\n variant=\"callAction\"\n />\n \n \n \n \n {isLoading && }\n {!isLoading && (\n \n {records.length > 0 && (\n \n \n \n {\n setSelectedTier(tierData);\n setUpdateCredentialsOpen(true);\n },\n },\n {\n type: \"delete\",\n isDisabled: !hasPermission(\n \"*\",\n IAM_PERMISSIONS[IAM_ROLES.BUCKET_LIFECYCLE],\n true,\n ),\n onClick: (tierData: Tier) => {\n setSelectedTier(tierData);\n setDeleteTierModalOpen(true);\n },\n },\n ]}\n columns={[\n {\n label: \"Tier Name\",\n elementKey: \"type\",\n renderFunction: renderTierName,\n renderFullObject: true,\n },\n {\n label: \"Status\",\n elementKey: \"status\",\n renderFunction: renderTierStatus,\n width: 50,\n },\n {\n label: \"Type\",\n elementKey: \"type\",\n renderFunction: renderTierType,\n width: 50,\n },\n {\n label: \"Endpoint\",\n elementKey: \"type\",\n renderFunction: renderTierEndpoint,\n renderFullObject: true,\n },\n {\n label: \"Bucket\",\n elementKey: \"type\",\n renderFunction: renderTierBucket,\n renderFullObject: true,\n },\n {\n label: \"Prefix\",\n elementKey: \"type\",\n renderFunction: renderTierPrefix,\n renderFullObject: true,\n },\n {\n label: \"Region\",\n elementKey: \"type\",\n renderFunction: renderTierRegion,\n renderFullObject: true,\n },\n {\n label: \"Usage\",\n elementKey: \"type\",\n renderFunction: renderTierUsage,\n renderFullObject: true,\n },\n {\n label: \"Objects\",\n elementKey: \"type\",\n renderFunction: renderTierObjects,\n renderFullObject: true,\n },\n {\n label: \"Versions\",\n elementKey: \"type\",\n renderFunction: renderTierVersions,\n renderFullObject: true,\n },\n ]}\n isLoading={isLoading}\n records={filteredRecords}\n entityName=\"Tiers\"\n idField=\"service_name\"\n customPaperHeight={\"400px\"}\n />\n \n \n \n }\n help={\n \n Tiers are used by the MinIO Object Lifecycle\n Management which allows creating rules for time or\n date based automatic transition or expiry of\n objects. For object transition, MinIO automatically\n moves the object to a configured remote storage\n tier.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n \n
\n )}\n {records.length === 0 && (\n }\n help={\n \n Tiers are used by the MinIO Object Lifecycle Management\n which allows creating rules for time or date based\n automatic transition or expiry of objects. For object\n transition, MinIO automatically moves the object to a\n configured remote storage tier.\n
\n
\n {hasSetTier ? (\n

\n To get started,{\" \"}\n \n Create Tier\n \n .\n
\n ) : (\n \"\"\n )}\n \n }\n />\n )}\n \n )}\n \n )}\n \n \n );\n};\n\nexport default ListTiersConfiguration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport {\n AzureTierIcon,\n AzureTierIconXs,\n GoogleTierIcon,\n GoogleTierIconXs,\n MinIOTierIcon,\n MinIOTierIconXs,\n S3TierIcon,\n S3TierIconXs,\n} from \"mds\";\n\nexport const minioServiceName = \"minio\";\nexport const gcsServiceName = \"gcs\";\nexport const s3ServiceName = \"s3\";\nexport const azureServiceName = \"azure\";\n\nexport const tierTypes = [\n {\n serviceName: minioServiceName,\n targetTitle: \"MinIO\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: gcsServiceName,\n targetTitle: \"Google Cloud Storage\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: s3ServiceName,\n targetTitle: \"AWS S3\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: azureServiceName,\n targetTitle: \"Azure\",\n logo: ,\n logoXs: ,\n },\n];\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_ref","iconComponent","entity","Grid","container","item","xs","HelpBox","title","concat","help","_jsxs","Box","sx","fontSize","breakPoints","sm","display","flexFlow","href","target","rel","open","closeModalAndRefresh","tierName","dispatch","useAppDispatch","ConfirmDialog","confirmText","isOpen","titleIcon","ConfirmModalIcon","isLoading","onConfirm","api","admin","removeTier","then","catch","err","json","body","setErrorSnackMessage","errorMessage","message","detailedError","detailedMessage","onClose","confirmationContent","React","UpdateTierCredentialsModal","withSuspense","ListTiersConfiguration","navigate","useNavigate","distributedSetup","useSelector","selDistSet","records","setRecords","useState","filter","setFilter","setIsLoading","updateCredentialsOpen","setUpdateCredentialsOpen","deleteTierModalOpen","setDeleteTierModalOpen","selectedTier","setSelectedTier","type","status","hasSetTier","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","ADMIN_SET_TIER","useEffect","fetchRecords","tiersList","res","data","items","errorToHandler","error","filteredRecords","b","getItemName","get","getItemType","indexOf","addTier","IAM_PAGES","TIERS_ADD","setHelpName","Fragment","tierData","closeTierCredentials","DeleteTierConfirmModal","closeDeleteTier","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","actionsTray","SearchBox","placeholder","onChange","value","marginRight","maxWidth","flexWrap","gap","Button","id","icon","RefreshIcon","onClick","TooltipWrapper","tooltip","SecureComponent","scopes","resource","errorProps","disabled","AddIcon","variant","ProgressBar","ADMIN_LIST_TIERS","DataTable","itemActions","isDisabled","IAM_PERMISSIONS","IAM_ROLES","BUCKET_LIFECYCLE","columns","elementKey","renderFunction","name","renderFullObject","alignItems","justifyItems","color","flexDirection","TierOnlineIcon","style","fill","width","height","TierOfflineIcon","logoXs","tierTypes","find","tierConf","serviceName","endpoint","bucket","prefix","region","entityName","idField","customPaperHeight","marginTop","TiersIcon","ActionLink","DistributedOnly","TiersNotAvailableIcon","minioServiceName","gcsServiceName","s3ServiceName","azureServiceName","targetTitle","logo","MinIOTierIcon","MinIOTierIconXs","GoogleTierIcon","GoogleTierIconXs","S3TierIcon","S3TierIconXs","AzureTierIcon","AzureTierIconXs"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/8789.5dfcad74.chunk.js b/web-app/build/static/js/8789.5dfcad74.chunk.js deleted file mode 100644 index d2da383bb..000000000 --- a/web-app/build/static/js/8789.5dfcad74.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[8789],{72237:(e,s,t)=>{t.d(s,{A:()=>l});var n=t(65043),r=t(70579);const l=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(t){return(0,r.jsx)(n.Suspense,{fallback:s,children:(0,r.jsx)(e,{...t})})}}},78789:(e,s,t)=>{t.r(s),t.d(s,{default:()=>S});var n=t(65043),r=t(73216),l=t(89923),o=t(56629),i=t(8185),c=t(77403),a=t(99161),d=t(77938),p=t(53518),u=t(72237),h=t(56483),x=t(64159),j=t(20554),m=t(6681),g=t(48793),b=t(55968),f=t(64681),A=t(70579);const y=(0,u.A)(n.lazy((()=>t.e(5851).then(t.bind(t,85851))))),G=(0,u.A)(n.lazy((()=>t.e(4705).then(t.bind(t,74705))))),S=()=>{const e=(0,j.jL)(),s=(0,r.Zp)(),[t,u]=(0,n.useState)(!1),[S,M]=(0,n.useState)(!1),[k,C]=(0,n.useState)([]),[v,P]=(0,n.useState)(""),[O,w]=(0,n.useState)(!1),[R,_]=(0,n.useState)([]);(0,n.useEffect)((()=>{M(!0)}),[]),(0,n.useEffect)((()=>{M(!0)}),[]),(0,n.useEffect)((()=>{e((0,x.ph)("groups"))}),[]);const F=(0,d._)(a.Ms,a.lj),z=(0,d._)(a.Ms,a.lP),D=(0,d._)(a.Ms,a.Oh),K=(0,d._)(a.Ms,a.bO,!0);(0,n.useEffect)((()=>{if(S)if(F){(()=>{o.F.groups.listGroups().then((e=>{let s=[];e.data.groups&&(s=e.data.groups.sort(i.SO)),C(s),M(!1)})).catch((s=>{e((0,x.C9)((0,p.S)(s.error))),M(!1)}))})()}else M(!1)}),[S,e,F]);const E=k.filter((e=>e.includes(v))),I=e=>{s("".concat(a.zZ.GROUPS,"/").concat((0,h.nf)(e)))},T=[{type:"view",onClick:I,disableButtonFunction:()=>!D},{type:"edit",onClick:I,disableButtonFunction:()=>!D}];return(0,A.jsxs)(n.Fragment,{children:[t&&(0,A.jsx)(y,{deleteOpen:t,selectedGroups:R,closeDeleteModalAndRefresh:e=>{u(!1),_([]),e&&M(!0)}}),O&&(0,A.jsx)(G,{open:O,selectedGroups:R,selectedUser:null,closeModalAndRefresh:()=>{w(!1)}}),(0,A.jsx)(g.A,{label:"Groups",actions:(0,A.jsx)(b.A,{})}),(0,A.jsx)(l.Mxu,{children:(0,A.jsxs)(l.xA9,{container:!0,children:[(0,A.jsxs)(l.xA9,{item:!0,xs:12,sx:c._0.actionsTray,children:[(0,A.jsx)(d.R,{resource:a.Ms,scopes:a.lj,errorProps:{disabled:!0},children:(0,A.jsx)(f.A,{placeholder:"Search Groups",onChange:P,value:v,sx:{maxWidth:380}})}),(0,A.jsxs)(l.azJ,{sx:{display:"flex"},children:[(0,A.jsx)(d.R,{resource:a.Ms,scopes:a.bO,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(m.A,{tooltip:R.length<1?"Please select Groups on which you want to apply Policies":K?"Select Policy":(0,a.vj)(a.bO,"apply policies to Groups"),children:(0,A.jsx)(l.$nd,{id:"assign-policy",onClick:()=>{w(!0)},label:"Assign Policy",icon:(0,A.jsx)(l.n$X,{}),disabled:R.length<1||!K,variant:"regular"})})}),(0,A.jsx)(d.R,{resource:a.Ms,scopes:a.lP,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(m.A,{tooltip:0===R.length?"Select Groups to delete":D?"Delete Selected":(0,a.vj)(a.Oh,"delete Groups"),children:(0,A.jsx)(l.$nd,{id:"delete-selected-groups",onClick:()=>{u(!0)},label:"Delete Selected",icon:(0,A.jsx)(l.d7y,{}),variant:"secondary",disabled:0===R.length||!D})})}),(0,A.jsx)(d.R,{resource:a.Ms,scopes:a.k1,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(m.A,{tooltip:"Create Group",children:(0,A.jsx)(l.$nd,{id:"create-group",label:"Create Group",variant:"callAction",icon:(0,A.jsx)(l.REV,{}),onClick:()=>{s("".concat(a.zZ.GROUPS_ADD))}})})})]})]}),S&&(0,A.jsx)(l.z21,{}),!S&&(0,A.jsxs)(n.Fragment,{children:[k.length>0&&(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)(l.xA9,{item:!0,xs:12,sx:{marginBottom:15},children:(0,A.jsx)(d.R,{resource:a.Ms,scopes:a.lj,errorProps:{disabled:!0},children:(0,A.jsx)(l.bQt,{itemActions:T,columns:[{label:"Name"}],isLoading:S,selectedItems:R,onSelect:z||D?e=>{const{target:{value:s="",checked:t=!1}={}}=e;let n=[...R];return t?n.push(s):n=n.filter((e=>e!==s)),_(n),n}:void 0,records:E,entityName:"Groups",idField:""})})}),(0,A.jsx)(l.xA9,{item:!0,xs:12,children:(0,A.jsx)(l.lVp,{title:"Groups",iconComponent:(0,A.jsx)(l.YXz,{}),help:(0,A.jsxs)(n.Fragment,{children:["A group can have one attached IAM policy, where all users with membership in that group inherit that policy. Groups support more simplified management of user permissions on the MinIO Tenant.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"You can learn more at our"," ",(0,A.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/identity-access-management/minio-group-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]}),0===k.length&&(0,A.jsx)(l.xA9,{container:!0,children:(0,A.jsx)(l.xA9,{item:!0,xs:8,children:(0,A.jsx)(l.lVp,{title:"Groups",iconComponent:(0,A.jsx)(l.c2u,{}),help:(0,A.jsxs)(n.Fragment,{children:["A group can have one attached IAM policy, where all users with membership in that group inherit that policy. Groups support more simplified management of user permissions on the MinIO Tenant.",(0,A.jsxs)(d.R,{resource:a.Ms,scopes:a.k1,matchAll:!0,children:[(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"To get started,"," ",(0,A.jsx)(l.t53,{onClick:()=>{s("".concat(a.zZ.GROUPS_ADD))},children:"Create a Group"}),"."]})]})})})})]})]})})]})}},8185:(e,s,t)=>{t.d(s,{Hw:()=>r,LA:()=>n,SO:()=>l,rY:()=>o});const n=(e,s)=>{if(e.accessKey&&s.accessKey){if(e.accessKey>s.accessKey)return 1;if(e.accessKeye.name>s.name?1:e.namee>s?1:ee.policy>s.policy?1:e.policy.\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n AddIcon,\n Button,\n DeleteIcon,\n GroupsIcon,\n HelpBox,\n IAMPoliciesIcon,\n PageLayout,\n UsersIcon,\n DataTable,\n Grid,\n Box,\n ProgressBar,\n ActionLink,\n} from \"mds\";\n\nimport { api } from \"api\";\nimport { stringSort } from \"../../../utils/sortFunctions\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n applyPolicyPermissions,\n CONSOLE_UI_RESOURCE,\n createGroupPermissions,\n deleteGroupPermissions,\n displayGroupsPermissions,\n getGroupPermissions,\n IAM_PAGES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { errorToHandler } from \"../../../api/errors\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport SearchBox from \"../Common/SearchBox\";\n\nconst DeleteGroup = withSuspense(React.lazy(() => import(\"./DeleteGroup\")));\nconst SetPolicy = withSuspense(\n React.lazy(() => import(\"../Policies/SetPolicy\")),\n);\n\nconst Groups = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [loading, isLoading] = useState(false);\n const [records, setRecords] = useState([]);\n const [filter, setFilter] = useState(\"\");\n const [policyOpen, setPolicyOpen] = useState(false);\n const [checkedGroups, setCheckedGroups] = useState([]);\n\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n dispatch(setHelpName(\"groups\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const displayGroups = hasPermission(\n CONSOLE_UI_RESOURCE,\n displayGroupsPermissions,\n );\n\n const deleteGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n deleteGroupPermissions,\n );\n\n const getGroup = hasPermission(CONSOLE_UI_RESOURCE, getGroupPermissions);\n\n const applyPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n applyPolicyPermissions,\n true,\n );\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const { target: { value = \"\", checked = false } = {} } = e;\n\n let elements: string[] = [...checkedGroups]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n\n setCheckedGroups(elements);\n\n return elements;\n };\n\n useEffect(() => {\n if (loading) {\n if (displayGroups) {\n const fetchRecords = () => {\n api.groups\n .listGroups()\n .then((res) => {\n let resGroups: string[] = [];\n if (res.data.groups) {\n resGroups = res.data.groups.sort(stringSort);\n }\n setRecords(resGroups);\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n };\n fetchRecords();\n } else {\n isLoading(false);\n }\n }\n }, [loading, dispatch, displayGroups]);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n setCheckedGroups([]);\n if (refresh) {\n isLoading(true);\n }\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.includes(filter),\n );\n\n const viewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURLString(group)}`);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !getGroup,\n },\n {\n type: \"edit\",\n onClick: viewAction,\n disableButtonFunction: () => !getGroup,\n },\n ];\n\n return (\n \n {deleteOpen && (\n \n )}\n {policyOpen && (\n {\n setPolicyOpen(false);\n }}\n />\n )}\n } />\n\n \n \n \n \n \n \n \n \n \n {\n setPolicyOpen(true);\n }}\n label={\"Assign Policy\"}\n icon={}\n disabled={checkedGroups.length < 1 || !applyPolicy}\n variant={\"regular\"}\n />\n \n \n \n \n {\n setDeleteOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n variant=\"secondary\"\n disabled={checkedGroups.length === 0 || !getGroup}\n />\n \n \n \n \n }\n onClick={() => {\n navigate(`${IAM_PAGES.GROUPS_ADD}`);\n }}\n />\n \n \n \n \n {loading && }\n {!loading && (\n \n {records.length > 0 && (\n \n \n \n \n \n \n \n }\n help={\n \n A group can have one attached IAM policy, where all\n users with membership in that group inherit that\n policy. Groups support more simplified management of\n user permissions on the MinIO Tenant.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n
\n
\n )}\n {records.length === 0 && (\n \n \n }\n help={\n \n A group can have one attached IAM policy, where all\n users with membership in that group inherit that\n policy. Groups support more simplified management of\n user permissions on the MinIO Tenant.\n \n
\n
\n To get started,{\" \"}\n {\n navigate(`${IAM_PAGES.GROUPS_ADD}`);\n }}\n >\n Create a Group\n \n .\n \n
\n }\n />\n
\n
\n )}\n
\n )}\n
\n
\n
\n );\n};\n\nexport default Groups;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","DeleteGroup","withSuspense","React","SetPolicy","Groups","dispatch","useAppDispatch","navigate","useNavigate","deleteOpen","setDeleteOpen","useState","loading","isLoading","records","setRecords","filter","setFilter","policyOpen","setPolicyOpen","checkedGroups","setCheckedGroups","useEffect","setHelpName","displayGroups","hasPermission","CONSOLE_UI_RESOURCE","displayGroupsPermissions","deleteGroup","deleteGroupPermissions","getGroup","getGroupPermissions","applyPolicy","applyPolicyPermissions","fetchRecords","api","groups","listGroups","then","res","resGroups","data","sort","stringSort","catch","err","setErrorSnackMessage","errorToHandler","error","filteredRecords","elementItem","includes","viewAction","group","concat","IAM_PAGES","GROUPS","encodeURLString","tableActions","type","onClick","disableButtonFunction","_jsxs","Fragment","selectedGroups","closeDeleteModalAndRefresh","refresh","open","selectedUser","closeModalAndRefresh","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","actionsTray","SecureComponent","resource","scopes","errorProps","disabled","SearchBox","placeholder","onChange","value","maxWidth","Box","display","matchAll","TooltipWrapper","tooltip","permissionTooltipHelper","Button","id","icon","IAMPoliciesIcon","variant","DeleteIcon","createGroupPermissions","AddIcon","GROUPS_ADD","ProgressBar","marginBottom","DataTable","itemActions","columns","selectedItems","onSelect","e","target","checked","elements","push","element","entityName","idField","HelpBox","title","iconComponent","GroupsIcon","help","href","rel","UsersIcon","ActionLink","usersSort","a","b","accessKey","policySort","name","policyDetailsSort","policy"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/8789.c1e4949f.chunk.js b/web-app/build/static/js/8789.c1e4949f.chunk.js new file mode 100644 index 000000000..23728233c --- /dev/null +++ b/web-app/build/static/js/8789.c1e4949f.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[8789],{72237:(e,s,t)=>{t.d(s,{A:()=>o});var n=t(65043),r=t(70579);const o=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(t){return(0,r.jsx)(n.Suspense,{fallback:s,children:(0,r.jsx)(e,{...t})})}}},78789:(e,s,t)=>{t.r(s),t.d(s,{default:()=>G});var n=t(65043),r=t(73216),o=t(89923),l=t(56629),c=t(8185),i=t(77403),a=t(99161),d=t(77938),p=t(53518),u=t(72237),h=t(64159),x=t(20554),j=t(6681),m=t(48793),g=t(55968),b=t(64681),A=t(70579);const f=(0,u.A)(n.lazy((()=>t.e(5851).then(t.bind(t,85851))))),y=(0,u.A)(n.lazy((()=>t.e(4705).then(t.bind(t,74705))))),G=()=>{const e=(0,x.jL)(),s=(0,r.Zp)(),[t,u]=(0,n.useState)(!1),[G,S]=(0,n.useState)(!1),[M,C]=(0,n.useState)([]),[k,v]=(0,n.useState)(""),[P,O]=(0,n.useState)(!1),[R,w]=(0,n.useState)([]);(0,n.useEffect)((()=>{S(!0)}),[]),(0,n.useEffect)((()=>{S(!0)}),[]),(0,n.useEffect)((()=>{e((0,h.ph)("groups"))}),[]);const _=(0,d._)(a.Ms,a.lj),F=(0,d._)(a.Ms,a.lP),z=(0,d._)(a.Ms,a.Oh),D=(0,d._)(a.Ms,a.bO,!0);(0,n.useEffect)((()=>{if(G)if(_){(()=>{l.F.groups.listGroups().then((e=>{let s=[];e.data.groups&&(s=e.data.groups.sort(c.SO)),C(s),S(!1)})).catch((s=>{e((0,h.C9)((0,p.S)(s.error))),S(!1)}))})()}else S(!1)}),[G,e,_]);const I=M.filter((e=>e.includes(k))),K=e=>{s("".concat(a.zZ.GROUPS,"/").concat(encodeURIComponent(e)))},E=[{type:"view",onClick:K,disableButtonFunction:()=>!z},{type:"edit",onClick:K,disableButtonFunction:()=>!z}];return(0,A.jsxs)(n.Fragment,{children:[t&&(0,A.jsx)(f,{deleteOpen:t,selectedGroups:R,closeDeleteModalAndRefresh:e=>{u(!1),w([]),e&&S(!0)}}),P&&(0,A.jsx)(y,{open:P,selectedGroups:R,selectedUser:null,closeModalAndRefresh:()=>{O(!1)}}),(0,A.jsx)(m.A,{label:"Groups",actions:(0,A.jsx)(g.A,{})}),(0,A.jsx)(o.Mxu,{children:(0,A.jsxs)(o.xA9,{container:!0,children:[(0,A.jsxs)(o.xA9,{item:!0,xs:12,sx:i._0.actionsTray,children:[(0,A.jsx)(d.R,{resource:a.Ms,scopes:a.lj,errorProps:{disabled:!0},children:(0,A.jsx)(b.A,{placeholder:"Search Groups",onChange:v,value:k,sx:{maxWidth:380}})}),(0,A.jsxs)(o.azJ,{sx:{display:"flex"},children:[(0,A.jsx)(d.R,{resource:a.Ms,scopes:a.bO,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(j.A,{tooltip:R.length<1?"Please select Groups on which you want to apply Policies":D?"Select Policy":(0,a.vj)(a.bO,"apply policies to Groups"),children:(0,A.jsx)(o.$nd,{id:"assign-policy",onClick:()=>{O(!0)},label:"Assign Policy",icon:(0,A.jsx)(o.n$X,{}),disabled:R.length<1||!D,variant:"regular"})})}),(0,A.jsx)(d.R,{resource:a.Ms,scopes:a.lP,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(j.A,{tooltip:0===R.length?"Select Groups to delete":z?"Delete Selected":(0,a.vj)(a.Oh,"delete Groups"),children:(0,A.jsx)(o.$nd,{id:"delete-selected-groups",onClick:()=>{u(!0)},label:"Delete Selected",icon:(0,A.jsx)(o.d7y,{}),variant:"secondary",disabled:0===R.length||!z})})}),(0,A.jsx)(d.R,{resource:a.Ms,scopes:a.k1,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(j.A,{tooltip:"Create Group",children:(0,A.jsx)(o.$nd,{id:"create-group",label:"Create Group",variant:"callAction",icon:(0,A.jsx)(o.REV,{}),onClick:()=>{s("".concat(a.zZ.GROUPS_ADD))}})})})]})]}),G&&(0,A.jsx)(o.z21,{}),!G&&(0,A.jsxs)(n.Fragment,{children:[M.length>0&&(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)(o.xA9,{item:!0,xs:12,sx:{marginBottom:15},children:(0,A.jsx)(d.R,{resource:a.Ms,scopes:a.lj,errorProps:{disabled:!0},children:(0,A.jsx)(o.bQt,{itemActions:E,columns:[{label:"Name"}],isLoading:G,selectedItems:R,onSelect:F||z?e=>{const{target:{value:s="",checked:t=!1}={}}=e;let n=[...R];return t?n.push(s):n=n.filter((e=>e!==s)),w(n),n}:void 0,records:I,entityName:"Groups",idField:""})})}),(0,A.jsx)(o.xA9,{item:!0,xs:12,children:(0,A.jsx)(o.lVp,{title:"Groups",iconComponent:(0,A.jsx)(o.YXz,{}),help:(0,A.jsxs)(n.Fragment,{children:["A group can have one attached IAM policy, where all users with membership in that group inherit that policy. Groups support more simplified management of user permissions on the MinIO Tenant.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"You can learn more at our"," ",(0,A.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/identity-access-management/minio-group-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]}),0===M.length&&(0,A.jsx)(o.xA9,{container:!0,children:(0,A.jsx)(o.xA9,{item:!0,xs:8,children:(0,A.jsx)(o.lVp,{title:"Groups",iconComponent:(0,A.jsx)(o.c2u,{}),help:(0,A.jsxs)(n.Fragment,{children:["A group can have one attached IAM policy, where all users with membership in that group inherit that policy. Groups support more simplified management of user permissions on the MinIO Tenant.",(0,A.jsxs)(d.R,{resource:a.Ms,scopes:a.k1,matchAll:!0,children:[(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"To get started,"," ",(0,A.jsx)(o.t53,{onClick:()=>{s("".concat(a.zZ.GROUPS_ADD))},children:"Create a Group"}),"."]})]})})})})]})]})})]})}},8185:(e,s,t)=>{t.d(s,{Hw:()=>r,LA:()=>n,SO:()=>o,rY:()=>l});const n=(e,s)=>{if(e.accessKey&&s.accessKey){if(e.accessKey>s.accessKey)return 1;if(e.accessKeye.name>s.name?1:e.namee>s?1:ee.policy>s.policy?1:e.policy.\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n AddIcon,\n Button,\n DeleteIcon,\n GroupsIcon,\n HelpBox,\n IAMPoliciesIcon,\n PageLayout,\n UsersIcon,\n DataTable,\n Grid,\n Box,\n ProgressBar,\n ActionLink,\n} from \"mds\";\n\nimport { api } from \"api\";\nimport { stringSort } from \"../../../utils/sortFunctions\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n applyPolicyPermissions,\n CONSOLE_UI_RESOURCE,\n createGroupPermissions,\n deleteGroupPermissions,\n displayGroupsPermissions,\n getGroupPermissions,\n IAM_PAGES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { errorToHandler } from \"../../../api/errors\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport SearchBox from \"../Common/SearchBox\";\n\nconst DeleteGroup = withSuspense(React.lazy(() => import(\"./DeleteGroup\")));\nconst SetPolicy = withSuspense(\n React.lazy(() => import(\"../Policies/SetPolicy\")),\n);\n\nconst Groups = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [loading, isLoading] = useState(false);\n const [records, setRecords] = useState([]);\n const [filter, setFilter] = useState(\"\");\n const [policyOpen, setPolicyOpen] = useState(false);\n const [checkedGroups, setCheckedGroups] = useState([]);\n\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n dispatch(setHelpName(\"groups\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const displayGroups = hasPermission(\n CONSOLE_UI_RESOURCE,\n displayGroupsPermissions,\n );\n\n const deleteGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n deleteGroupPermissions,\n );\n\n const getGroup = hasPermission(CONSOLE_UI_RESOURCE, getGroupPermissions);\n\n const applyPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n applyPolicyPermissions,\n true,\n );\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const { target: { value = \"\", checked = false } = {} } = e;\n\n let elements: string[] = [...checkedGroups]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n\n setCheckedGroups(elements);\n\n return elements;\n };\n\n useEffect(() => {\n if (loading) {\n if (displayGroups) {\n const fetchRecords = () => {\n api.groups\n .listGroups()\n .then((res) => {\n let resGroups: string[] = [];\n if (res.data.groups) {\n resGroups = res.data.groups.sort(stringSort);\n }\n setRecords(resGroups);\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n };\n fetchRecords();\n } else {\n isLoading(false);\n }\n }\n }, [loading, dispatch, displayGroups]);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n setCheckedGroups([]);\n if (refresh) {\n isLoading(true);\n }\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.includes(filter),\n );\n\n const viewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURIComponent(group)}`);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !getGroup,\n },\n {\n type: \"edit\",\n onClick: viewAction,\n disableButtonFunction: () => !getGroup,\n },\n ];\n\n return (\n \n {deleteOpen && (\n \n )}\n {policyOpen && (\n {\n setPolicyOpen(false);\n }}\n />\n )}\n } />\n\n \n \n \n \n \n \n \n \n \n {\n setPolicyOpen(true);\n }}\n label={\"Assign Policy\"}\n icon={}\n disabled={checkedGroups.length < 1 || !applyPolicy}\n variant={\"regular\"}\n />\n \n \n \n \n {\n setDeleteOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n variant=\"secondary\"\n disabled={checkedGroups.length === 0 || !getGroup}\n />\n \n \n \n \n }\n onClick={() => {\n navigate(`${IAM_PAGES.GROUPS_ADD}`);\n }}\n />\n \n \n \n \n {loading && }\n {!loading && (\n \n {records.length > 0 && (\n \n \n \n \n \n \n \n }\n help={\n \n A group can have one attached IAM policy, where all\n users with membership in that group inherit that\n policy. Groups support more simplified management of\n user permissions on the MinIO Tenant.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n
\n
\n )}\n {records.length === 0 && (\n \n \n }\n help={\n \n A group can have one attached IAM policy, where all\n users with membership in that group inherit that\n policy. Groups support more simplified management of\n user permissions on the MinIO Tenant.\n \n
\n
\n To get started,{\" \"}\n {\n navigate(`${IAM_PAGES.GROUPS_ADD}`);\n }}\n >\n Create a Group\n \n .\n \n
\n }\n />\n
\n
\n )}\n
\n )}\n
\n
\n
\n );\n};\n\nexport default Groups;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","DeleteGroup","withSuspense","React","SetPolicy","Groups","dispatch","useAppDispatch","navigate","useNavigate","deleteOpen","setDeleteOpen","useState","loading","isLoading","records","setRecords","filter","setFilter","policyOpen","setPolicyOpen","checkedGroups","setCheckedGroups","useEffect","setHelpName","displayGroups","hasPermission","CONSOLE_UI_RESOURCE","displayGroupsPermissions","deleteGroup","deleteGroupPermissions","getGroup","getGroupPermissions","applyPolicy","applyPolicyPermissions","fetchRecords","api","groups","listGroups","then","res","resGroups","data","sort","stringSort","catch","err","setErrorSnackMessage","errorToHandler","error","filteredRecords","elementItem","includes","viewAction","group","concat","IAM_PAGES","GROUPS","encodeURIComponent","tableActions","type","onClick","disableButtonFunction","_jsxs","Fragment","selectedGroups","closeDeleteModalAndRefresh","refresh","open","selectedUser","closeModalAndRefresh","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","actionsTray","SecureComponent","resource","scopes","errorProps","disabled","SearchBox","placeholder","onChange","value","maxWidth","Box","display","matchAll","TooltipWrapper","tooltip","permissionTooltipHelper","Button","id","icon","IAMPoliciesIcon","variant","DeleteIcon","createGroupPermissions","AddIcon","GROUPS_ADD","ProgressBar","marginBottom","DataTable","itemActions","columns","selectedItems","onSelect","e","target","checked","elements","push","element","entityName","idField","HelpBox","title","iconComponent","GroupsIcon","help","href","rel","UsersIcon","ActionLink","usersSort","a","b","accessKey","policySort","name","policyDetailsSort","policy"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/8821.e7fb1c57.chunk.js b/web-app/build/static/js/8821.e7fb1c57.chunk.js deleted file mode 100644 index d223956bb..000000000 --- a/web-app/build/static/js/8821.e7fb1c57.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[8821],{72237:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(65043),i=n(70579);const s=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,i.jsx)(r.Suspense,{fallback:t,children:(0,i.jsx)(e,{...n})})}}},72271:(e,t,n)=>{n.d(t,{A:()=>s});n(65043);var r=n(89923),i=n(70579);const s=e=>{let{iconComponent:t,entity:n}=e;return(0,i.jsx)(r.xA9,{container:!0,children:(0,i.jsx)(r.xA9,{item:!0,xs:12,children:(0,i.jsx)(r.lVp,{title:"".concat(n," not available"),iconComponent:t,help:(0,i.jsxs)(r.azJ,{sx:{fontSize:"14px",["@media (max-width: ".concat(r.nmC.sm,"px)")]:{display:"flex",flexFlow:"column"}},children:[(0,i.jsx)("span",{children:"This feature is not available for a single-disk setup.\xa0"}),(0,i.jsxs)("span",{children:["Please deploy a server in"," ",(0,i.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html?ref=con",target:"_blank",rel:"noopener",children:"Distributed Mode"})," ","to use this feature."]})]})})})})}},88821:(e,t,n)=>{n.r(t),n.d(t,{default:()=>v});var r=n(65043),i=n(33097),s=n.n(i),l=n(22166),o=n(73216),a=n(89923),c=n(56629),d=n(53518),x=n(77403),u=n(99161),m=n(77938),p=n(20755),j=n(64159),h=n(20554),g=n(64681),b=n(72237),y=n(72271),f=n(6681),F=n(48793),T=n(55968),A=n(70579);const O=(0,b.A)(r.lazy((()=>n.e(696).then(n.bind(n,20696))))),v=()=>{const e=(0,h.jL)(),t=(0,o.Zp)(),n=(0,l.d4)(j.Rq),[i,b]=(0,r.useState)([]),[v,C]=(0,r.useState)(""),[I,S]=(0,r.useState)(!0),[_,w]=(0,r.useState)(!1),[M,E]=(0,r.useState)({type:"unsupported",status:!1}),N=(0,m._)(u.Ms,[u.OV.ADMIN_SET_TIER]);(0,r.useEffect)((()=>{if(I)if(n){(()=>{c.F.admin.tiersList().then((e=>{b(e.data.items||[]),S(!1)})).catch((t=>{e((0,j.C9)((0,d.S)(t.error))),S(!1)}))})()}else S(!1)}),[I,e,n]);const k=i.filter((e=>{if(""===v)return!0;const t=s()(e,"".concat(e.type,".name"),""),n=s()(e,"type","");return t.indexOf(v)>=0||n.indexOf(v)>=0})),R=()=>{t(u.zZ.TIERS_ADD)};return(0,r.useEffect)((()=>{e((0,j.ph)("list-tiers-configuration"))}),[]),(0,A.jsxs)(r.Fragment,{children:[_&&(0,A.jsx)(O,{open:_,tierData:M,closeModalAndRefresh:()=>{w(!1)}}),(0,A.jsx)(F.A,{label:"Tiers",actions:(0,A.jsx)(T.A,{})}),(0,A.jsx)(a.Mxu,{children:n?(0,A.jsxs)(r.Fragment,{children:[(0,A.jsxs)(a.xA9,{item:!0,xs:12,sx:x._0.actionsTray,children:[(0,A.jsx)(g.A,{placeholder:"Filter",onChange:C,value:v,sx:{marginRight:"auto",maxWidth:380}}),(0,A.jsxs)(a.azJ,{sx:{display:"flex",flexWrap:"nowrap",gap:5},children:[(0,A.jsx)(a.$nd,{id:"refresh-list",icon:(0,A.jsx)(a.fNY,{}),label:"Refresh List",onClick:()=>{S(!0)}}),(0,A.jsx)(f.A,{tooltip:N?"":"You require additional permissions in order to create a new Tier. Please ask your MinIO administrator to grant you "+u.OV.ADMIN_SET_TIER+" permission in order to create a Tier.",children:(0,A.jsx)(m.R,{scopes:[u.OV.ADMIN_SET_TIER],resource:u.Ms,errorProps:{disabled:!0},children:(0,A.jsx)(a.$nd,{id:"add-tier",icon:(0,A.jsx)(a.REV,{}),label:"Create Tier",onClick:R,variant:"callAction"})})})]})]}),I&&(0,A.jsx)(a.z21,{}),!I&&(0,A.jsxs)(r.Fragment,{children:[i.length>0&&(0,A.jsxs)(r.Fragment,{children:[(0,A.jsx)(a.xA9,{item:!0,xs:12,children:(0,A.jsx)(m.R,{scopes:[u.OV.ADMIN_LIST_TIERS],resource:u.Ms,errorProps:{disabled:!0},children:(0,A.jsx)(a.bQt,{itemActions:[{type:"edit",onClick:e=>{E(e),w(!0)}}],columns:[{label:"Tier Name",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".name"),"");return null!==t?(0,A.jsx)("b",{children:t}):""},renderFullObject:!0},{label:"Status",elementKey:"status",renderFunction:e=>e?(0,A.jsxs)(a.xA9,{container:!0,sx:{display:"flex",alignItems:"center",justifyItems:"start",color:"#4CCB92",fontSize:"8px",flexDirection:"column"},children:[(0,A.jsx)(a.JrA,{style:{fill:"#4CCB92",width:14,height:14}}),"ONLINE"]}):(0,A.jsxs)(a.xA9,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",color:"#C83B51",fontSize:"8px"},children:[(0,A.jsx)(a.lgW,{style:{fill:"#C83B51",width:14,height:14}}),"OFFLINE"]}),width:50},{label:"Type",elementKey:"type",renderFunction:e=>{const{logoXs:t}=p._T.find((t=>t.serviceName===e))||{};return e?(0,A.jsx)(a.azJ,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"18px",height:"22px"}},children:t}):""},width:50},{label:"Endpoint",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".endpoint"),"");return null!==t?t:""},renderFullObject:!0},{label:"Bucket",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".bucket"),"");return null!==t?t:""},renderFullObject:!0},{label:"Prefix",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".prefix"),"");return null!==t?t:""},renderFullObject:!0},{label:"Region",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".region"),"");return null!==t?t:""},renderFullObject:!0},{label:"Usage",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".usage"),"");return null!==t?t:""},renderFullObject:!0},{label:"Objects",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".objects"),"");return null!==t?t:""},renderFullObject:!0},{label:"Versions",elementKey:"type",renderFunction:e=>{const t=s()(e,"".concat(e.type,".versions"),"");return null!==t?t:""},renderFullObject:!0}],isLoading:I,records:k,entityName:"Tiers",idField:"service_name",customPaperHeight:"400px"})})}),(0,A.jsx)(a.xA9,{item:!0,xs:12,sx:{marginTop:"15px"},children:(0,A.jsx)(a.lVp,{title:"Learn more about TIERS",iconComponent:(0,A.jsx)(a.fAn,{}),help:(0,A.jsxs)(r.Fragment,{children:["Tiers are used by the MinIO Object Lifecycle Management which allows creating rules for time or date based automatic transition or expiry of objects. For object transition, MinIO automatically moves the object to a configured remote storage tier.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"You can learn more at our"," ",(0,A.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/object-management/object-lifecycle-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]}),0===i.length&&(0,A.jsx)(a.lVp,{title:"Tiers",iconComponent:(0,A.jsx)(a.fAn,{}),help:(0,A.jsxs)(r.Fragment,{children:["Tiers are used by the MinIO Object Lifecycle Management which allows creating rules for time or date based automatic transition or expiry of objects. For object transition, MinIO automatically moves the object to a configured remote storage tier.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),N?(0,A.jsxs)("div",{children:["To get started,"," ",(0,A.jsx)(a.t53,{isLoading:!1,label:"",onClick:R,children:"Create Tier"}),"."]}):""]})})]})]}):(0,A.jsx)(y.A,{entity:"Tiers",iconComponent:(0,A.jsx)(a.zEc,{})})})]})}},20755:(e,t,n)=>{n.d(t,{_T:()=>c,pW:()=>o,qA:()=>l,vH:()=>s,y:()=>a});var r=n(89923),i=n(70579);const s="minio",l="gcs",o="s3",a="azure",c=[{serviceName:s,targetTitle:"MinIO",logo:(0,i.jsx)(r.Wh8,{}),logoXs:(0,i.jsx)(r.$2v,{})},{serviceName:l,targetTitle:"Google Cloud Storage",logo:(0,i.jsx)(r.F7U,{}),logoXs:(0,i.jsx)(r.gwF,{})},{serviceName:o,targetTitle:"AWS S3",logo:(0,i.jsx)(r._tF,{}),logoXs:(0,i.jsx)(r.ZZX,{})},{serviceName:a,targetTitle:"Azure",logo:(0,i.jsx)(r.Nmx,{}),logoXs:(0,i.jsx)(r.Ubg,{})}]}}]); -//# sourceMappingURL=8821.e7fb1c57.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/8821.e7fb1c57.chunk.js.map b/web-app/build/static/js/8821.e7fb1c57.chunk.js.map deleted file mode 100644 index 6cb2036b1..000000000 --- a/web-app/build/static/js/8821.e7fb1c57.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/8821.e7fb1c57.chunk.js","mappings":"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","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/DistributedOnly/DistributedOnly.tsx","screens/Console/Configurations/TiersConfiguration/ListTiersConfiguration.tsx","screens/Console/Configurations/TiersConfiguration/utils.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { HelpBox, Box, Grid, breakPoints } from \"mds\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n \n \n This feature is not available for a single-disk setup. \n \n \n Please deploy a server in{\" \"}\n \n Distributed Mode\n {\" \"}\n to use this feature.\n \n \n }\n />\n \n \n );\n};\n\nexport default DistributedOnly;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n ActionLink,\n AddIcon,\n Box,\n Button,\n DataTable,\n Grid,\n HelpBox,\n PageLayout,\n ProgressBar,\n RefreshIcon,\n TierOfflineIcon,\n TierOnlineIcon,\n TiersIcon,\n TiersNotAvailableIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Tier } from \"api/consoleApi\";\nimport { actionsTray } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_SCOPES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { tierTypes } from \"./utils\";\n\nimport {\n selDistSet,\n setErrorSnackMessage,\n setHelpName,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport SearchBox from \"../../Common/SearchBox\";\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport DistributedOnly from \"../../Common/DistributedOnly/DistributedOnly\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\n\nconst UpdateTierCredentialsModal = withSuspense(\n React.lazy(() => import(\"./UpdateTierCredentialsModal\")),\n);\n\nconst ListTiersConfiguration = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const distributedSetup = useSelector(selDistSet);\n const [records, setRecords] = useState([]);\n const [filter, setFilter] = useState(\"\");\n const [isLoading, setIsLoading] = useState(true);\n const [updateCredentialsOpen, setUpdateCredentialsOpen] =\n useState(false);\n const [selectedTier, setSelectedTier] = useState({\n type: \"unsupported\",\n status: false,\n });\n const hasSetTier = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_SET_TIER,\n ]);\n\n useEffect(() => {\n if (isLoading) {\n if (distributedSetup) {\n const fetchRecords = () => {\n api.admin\n .tiersList()\n .then((res) => {\n setRecords(res.data.items || []);\n setIsLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setIsLoading(false);\n });\n };\n fetchRecords();\n } else {\n setIsLoading(false);\n }\n }\n }, [isLoading, dispatch, distributedSetup]);\n\n const filteredRecords = records.filter((b: Tier) => {\n if (filter === \"\") {\n return true;\n }\n const getItemName = get(b, `${b.type}.name`, \"\");\n const getItemType = get(b, `type`, \"\");\n\n return getItemName.indexOf(filter) >= 0 || getItemType.indexOf(filter) >= 0;\n });\n\n const addTier = () => {\n navigate(IAM_PAGES.TIERS_ADD);\n };\n\n const renderTierName = (item: Tier) => {\n const name = get(item, `${item.type}.name`, \"\");\n\n if (name !== null) {\n return {name};\n }\n\n return \"\";\n };\n\n const renderTierType = (item: string) => {\n const { logoXs } =\n tierTypes.find((tierConf) => tierConf.serviceName === item) || {};\n if (item) {\n return (\n \n {logoXs}\n \n );\n }\n return \"\";\n };\n\n const renderTierStatus = (item: boolean) => {\n if (item) {\n return (\n \n \n ONLINE\n \n );\n }\n return (\n \n \n OFFLINE\n \n );\n };\n\n const renderTierPrefix = (item: Tier) => {\n const prefix = get(item, `${item.type}.prefix`, \"\");\n\n if (prefix !== null) {\n return prefix;\n }\n\n return \"\";\n };\n\n const renderTierEndpoint = (item: Tier) => {\n const endpoint = get(item, `${item.type}.endpoint`, \"\");\n\n if (endpoint !== null) {\n return endpoint;\n }\n\n return \"\";\n };\n\n const renderTierBucket = (item: Tier) => {\n const bucket = get(item, `${item.type}.bucket`, \"\");\n\n if (bucket !== null) {\n return bucket;\n }\n\n return \"\";\n };\n\n const renderTierRegion = (item: Tier) => {\n const region = get(item, `${item.type}.region`, \"\");\n\n if (region !== null) {\n return region;\n }\n\n return \"\";\n };\n\n const renderTierUsage = (item: Tier) => {\n const endpoint = get(item, `${item.type}.usage`, \"\");\n\n if (endpoint !== null) {\n return endpoint;\n }\n\n return \"\";\n };\n\n const renderTierObjects = (item: Tier) => {\n const endpoint = get(item, `${item.type}.objects`, \"\");\n\n if (endpoint !== null) {\n return endpoint;\n }\n\n return \"\";\n };\n\n const renderTierVersions = (item: Tier) => {\n const endpoint = get(item, `${item.type}.versions`, \"\");\n\n if (endpoint !== null) {\n return endpoint;\n }\n\n return \"\";\n };\n\n const closeTierCredentials = () => {\n setUpdateCredentialsOpen(false);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"list-tiers-configuration\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {updateCredentialsOpen && (\n \n )}\n } />\n\n \n {!distributedSetup ? (\n }\n />\n ) : (\n \n \n \n\n \n }\n label={`Refresh List`}\n onClick={() => {\n setIsLoading(true);\n }}\n />\n \n \n }\n label={`Create Tier`}\n onClick={addTier}\n variant=\"callAction\"\n />\n \n \n \n \n {isLoading && }\n {!isLoading && (\n \n {records.length > 0 && (\n \n \n \n {\n setSelectedTier(tierData);\n setUpdateCredentialsOpen(true);\n },\n },\n ]}\n columns={[\n {\n label: \"Tier Name\",\n elementKey: \"type\",\n renderFunction: renderTierName,\n renderFullObject: true,\n },\n {\n label: \"Status\",\n elementKey: \"status\",\n renderFunction: renderTierStatus,\n width: 50,\n },\n {\n label: \"Type\",\n elementKey: \"type\",\n renderFunction: renderTierType,\n width: 50,\n },\n {\n label: \"Endpoint\",\n elementKey: \"type\",\n renderFunction: renderTierEndpoint,\n renderFullObject: true,\n },\n {\n label: \"Bucket\",\n elementKey: \"type\",\n renderFunction: renderTierBucket,\n renderFullObject: true,\n },\n {\n label: \"Prefix\",\n elementKey: \"type\",\n renderFunction: renderTierPrefix,\n renderFullObject: true,\n },\n {\n label: \"Region\",\n elementKey: \"type\",\n renderFunction: renderTierRegion,\n renderFullObject: true,\n },\n {\n label: \"Usage\",\n elementKey: \"type\",\n renderFunction: renderTierUsage,\n renderFullObject: true,\n },\n {\n label: \"Objects\",\n elementKey: \"type\",\n renderFunction: renderTierObjects,\n renderFullObject: true,\n },\n {\n label: \"Versions\",\n elementKey: \"type\",\n renderFunction: renderTierVersions,\n renderFullObject: true,\n },\n ]}\n isLoading={isLoading}\n records={filteredRecords}\n entityName=\"Tiers\"\n idField=\"service_name\"\n customPaperHeight={\"400px\"}\n />\n \n \n \n }\n help={\n \n Tiers are used by the MinIO Object Lifecycle\n Management which allows creating rules for time or\n date based automatic transition or expiry of\n objects. For object transition, MinIO automatically\n moves the object to a configured remote storage\n tier.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n \n
\n )}\n {records.length === 0 && (\n }\n help={\n \n Tiers are used by the MinIO Object Lifecycle Management\n which allows creating rules for time or date based\n automatic transition or expiry of objects. For object\n transition, MinIO automatically moves the object to a\n configured remote storage tier.\n
\n
\n {hasSetTier ? (\n

\n To get started,{\" \"}\n \n Create Tier\n \n .\n
\n ) : (\n \"\"\n )}\n \n }\n />\n )}\n \n )}\n \n )}\n \n \n );\n};\n\nexport default ListTiersConfiguration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport {\n AzureTierIcon,\n AzureTierIconXs,\n GoogleTierIcon,\n GoogleTierIconXs,\n MinIOTierIcon,\n MinIOTierIconXs,\n S3TierIcon,\n S3TierIconXs,\n} from \"mds\";\n\nexport const minioServiceName = \"minio\";\nexport const gcsServiceName = \"gcs\";\nexport const s3ServiceName = \"s3\";\nexport const azureServiceName = \"azure\";\n\nexport const tierTypes = [\n {\n serviceName: minioServiceName,\n targetTitle: \"MinIO\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: gcsServiceName,\n targetTitle: \"Google Cloud Storage\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: s3ServiceName,\n targetTitle: \"AWS S3\",\n logo: ,\n logoXs: ,\n },\n {\n serviceName: azureServiceName,\n targetTitle: \"Azure\",\n logo: ,\n logoXs: ,\n },\n];\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_ref","iconComponent","entity","Grid","container","item","xs","HelpBox","title","concat","help","_jsxs","Box","sx","fontSize","breakPoints","sm","display","flexFlow","href","target","rel","UpdateTierCredentialsModal","withSuspense","React","ListTiersConfiguration","dispatch","useAppDispatch","navigate","useNavigate","distributedSetup","useSelector","selDistSet","records","setRecords","useState","filter","setFilter","isLoading","setIsLoading","updateCredentialsOpen","setUpdateCredentialsOpen","selectedTier","setSelectedTier","type","status","hasSetTier","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","ADMIN_SET_TIER","useEffect","fetchRecords","api","admin","tiersList","then","res","data","items","catch","err","setErrorSnackMessage","errorToHandler","error","filteredRecords","b","getItemName","get","getItemType","indexOf","addTier","IAM_PAGES","TIERS_ADD","setHelpName","Fragment","open","tierData","closeModalAndRefresh","closeTierCredentials","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","actionsTray","SearchBox","placeholder","onChange","value","marginRight","maxWidth","flexWrap","gap","Button","id","icon","RefreshIcon","onClick","TooltipWrapper","tooltip","SecureComponent","scopes","resource","errorProps","disabled","AddIcon","variant","ProgressBar","ADMIN_LIST_TIERS","DataTable","itemActions","columns","elementKey","renderFunction","name","renderFullObject","alignItems","justifyItems","color","flexDirection","TierOnlineIcon","style","fill","width","height","TierOfflineIcon","logoXs","tierTypes","find","tierConf","serviceName","endpoint","bucket","prefix","region","entityName","idField","customPaperHeight","marginTop","TiersIcon","ActionLink","DistributedOnly","TiersNotAvailableIcon","minioServiceName","gcsServiceName","s3ServiceName","azureServiceName","targetTitle","logo","MinIOTierIcon","MinIOTierIconXs","GoogleTierIcon","GoogleTierIconXs","S3TierIcon","S3TierIconXs","AzureTierIcon","AzureTierIconXs"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/8823.034b6a8d.chunk.js b/web-app/build/static/js/8823.034b6a8d.chunk.js deleted file mode 100644 index ee12b2e58..000000000 --- a/web-app/build/static/js/8823.034b6a8d.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[8823],{18823:(e,t,n)=>{n.r(t),n.d(t,{default:()=>p});var c=n(65043),s=n(58661),o=n(89923),l=n(56483),r=n(64159),a=n(20554),i=n(56629),u=n(53518),d=n(70579);const p=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedServiceAccount:p}=e;const f=(0,a.jL)(),[h,w]=(0,c.useState)(!1);if(!p)return null;return(0,d.jsx)(s.A,{title:"Delete Access Key",confirmText:"Delete",isOpen:n,titleIcon:(0,d.jsx)(o.xWY,{}),isLoading:h,onConfirm:()=>{w(!0),i.F.serviceAccounts.deleteServiceAccount((0,l.nf)(p)).then((e=>{t(!0)})).catch((async e=>{const n=await e.json();f((0,r.C9)((0,u.S)(n))),t(!1)})).finally((()=>w(!1)))},onClose:()=>t(!1),confirmationContent:(0,d.jsxs)(c.Fragment,{children:["Are you sure you want to delete Access Key"," ",(0,d.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:p}),"?"]})})}}}]); -//# sourceMappingURL=8823.034b6a8d.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/8823.034b6a8d.chunk.js.map b/web-app/build/static/js/8823.034b6a8d.chunk.js.map deleted file mode 100644 index 41c9213ff..000000000 --- a/web-app/build/static/js/8823.034b6a8d.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/8823.034b6a8d.chunk.js","mappings":"wOAgCA,MAyDA,EAzD6BA,IAIM,IAJL,2BAC5BC,EAA0B,WAC1BC,EAAU,uBACVC,GAC2BH,EAC3B,MAAMI,GAAWC,EAAAA,EAAAA,OAGVC,EAAeC,IAAoBC,EAAAA,EAAAA,WAAkB,GAE5D,IAAKL,EACH,OAAO,KAkBT,OACEM,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,oBACLC,YAAa,SACbC,OAAQX,EACRY,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWV,EACXW,UAtBoBC,KACtBX,GAAiB,GACjBY,EAAAA,EAAIC,gBACDC,sBAAqBC,EAAAA,EAAAA,IAAgBnB,IACrCoB,MAAMC,IACLvB,GAA2B,EAAK,IAEjCwB,OAAMC,UACL,MAAMC,QAAaC,EAAIC,OACvBzB,GAAS0B,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,KAC7C1B,GAA2B,EAAM,IAElC+B,SAAQ,IAAMzB,GAAiB,IAAO,EAWvC0B,QA/BYA,IAAMhC,GAA2B,GAgC7CiC,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,6CACmC,KAC3C5B,EAAAA,EAAAA,KAAA,KACE6B,MAAO,CACLC,SAAU,QACVC,WAAY,SACZC,SAAU,cACVJ,SAEDlC,IACC,QAIR,C","sources":["screens/Console/Account/DeleteServiceAccount.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteServiceAccountProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedServiceAccount: string | null;\n}\n\nconst DeleteServiceAccount = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedServiceAccount,\n}: IDeleteServiceAccountProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedServiceAccount) {\n return null;\n }\n\n const onConfirmDelete = () => {\n setLoadingDelete(true);\n api.serviceAccounts\n .deleteServiceAccount(encodeURLString(selectedServiceAccount))\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n };\n\n return (\n }\n isLoading={loadingDelete}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete Access Key{\" \"}\n \n {selectedServiceAccount}\n \n ?\n \n }\n />\n );\n};\n\nexport default DeleteServiceAccount;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedServiceAccount","dispatch","useAppDispatch","loadingDelete","setLoadingDelete","useState","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","api","serviceAccounts","deleteServiceAccount","encodeURLString","then","_","catch","async","err","res","json","setErrorSnackMessage","errorToHandler","finally","onClose","confirmationContent","_jsxs","Fragment","children","style","maxWidth","whiteSpace","wordWrap"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/8823.5a005f09.chunk.js b/web-app/build/static/js/8823.5a005f09.chunk.js new file mode 100644 index 000000000..6c4c1d307 --- /dev/null +++ b/web-app/build/static/js/8823.5a005f09.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[8823],{18823:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});var c=n(65043),s=n(58661),o=n(89923),l=n(64159),r=n(20554),a=n(56629),i=n(53518),u=n(70579);const d=e=>{let{closeDeleteModalAndRefresh:t,deleteOpen:n,selectedServiceAccount:d}=e;const p=(0,r.jL)(),[h,f]=(0,c.useState)(!1);if(!d)return null;return(0,u.jsx)(s.A,{title:"Delete Access Key",confirmText:"Delete",isOpen:n,titleIcon:(0,u.jsx)(o.xWY,{}),isLoading:h,onConfirm:()=>{f(!0),a.F.serviceAccounts.deleteServiceAccount(d).then((e=>{t(!0)})).catch((async e=>{const n=await e.json();p((0,l.C9)((0,i.S)(n))),t(!1)})).finally((()=>f(!1)))},onClose:()=>t(!1),confirmationContent:(0,u.jsxs)(c.Fragment,{children:["Are you sure you want to delete Access Key"," ",(0,u.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:d}),"?"]})})}}}]); +//# sourceMappingURL=8823.5a005f09.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/8823.5a005f09.chunk.js.map b/web-app/build/static/js/8823.5a005f09.chunk.js.map new file mode 100644 index 000000000..9f6daaf3b --- /dev/null +++ b/web-app/build/static/js/8823.5a005f09.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/8823.5a005f09.chunk.js","mappings":"6NA+BA,MAyDA,EAzD6BA,IAIM,IAJL,2BAC5BC,EAA0B,WAC1BC,EAAU,uBACVC,GAC2BH,EAC3B,MAAMI,GAAWC,EAAAA,EAAAA,OAGVC,EAAeC,IAAoBC,EAAAA,EAAAA,WAAkB,GAE5D,IAAKL,EACH,OAAO,KAkBT,OACEM,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,oBACLC,YAAa,SACbC,OAAQX,EACRY,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWV,EACXW,UAtBoBC,KACtBX,GAAiB,GACjBY,EAAAA,EAAIC,gBACDC,qBAAqBlB,GACrBmB,MAAMC,IACLtB,GAA2B,EAAK,IAEjCuB,OAAMC,UACL,MAAMC,QAAaC,EAAIC,OACvBxB,GAASyB,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,KAC7CzB,GAA2B,EAAM,IAElC8B,SAAQ,IAAMxB,GAAiB,IAAO,EAWvCyB,QA/BYA,IAAM/B,GAA2B,GAgC7CgC,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,6CACmC,KAC3C3B,EAAAA,EAAAA,KAAA,KACE4B,MAAO,CACLC,SAAU,QACVC,WAAY,SACZC,SAAU,cACVJ,SAEDjC,IACC,QAIR,C","sources":["screens/Console/Account/DeleteServiceAccount.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, HttpResponse } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteServiceAccountProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedServiceAccount: string | null;\n}\n\nconst DeleteServiceAccount = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedServiceAccount,\n}: IDeleteServiceAccountProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [loadingDelete, setLoadingDelete] = useState(false);\n\n if (!selectedServiceAccount) {\n return null;\n }\n\n const onConfirmDelete = () => {\n setLoadingDelete(true);\n api.serviceAccounts\n .deleteServiceAccount(selectedServiceAccount)\n .then((_) => {\n closeDeleteModalAndRefresh(true);\n })\n .catch(async (res: HttpResponse) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n closeDeleteModalAndRefresh(false);\n })\n .finally(() => setLoadingDelete(false));\n };\n\n return (\n }\n isLoading={loadingDelete}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete Access Key{\" \"}\n \n {selectedServiceAccount}\n \n ?\n \n }\n />\n );\n};\n\nexport default DeleteServiceAccount;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedServiceAccount","dispatch","useAppDispatch","loadingDelete","setLoadingDelete","useState","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onConfirmDelete","api","serviceAccounts","deleteServiceAccount","then","_","catch","async","err","res","json","setErrorSnackMessage","errorToHandler","finally","onClose","confirmationContent","_jsxs","Fragment","children","style","maxWidth","whiteSpace","wordWrap"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/960.41c7b96c.chunk.js b/web-app/build/static/js/960.41c7b96c.chunk.js new file mode 100644 index 000000000..6adf1e8ec --- /dev/null +++ b/web-app/build/static/js/960.41c7b96c.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[960],{25903:(t,e,n)=>{n.d(e,{A:()=>i});n(65043);var r=n(89923),a=n(70579);const i=t=>{let{icon:e=null,label:n=null}=t;return(0,a.jsxs)(r.azJ,{sx:{display:"flex",alignItems:"center",gap:5,marginTop:3},children:[(0,a.jsx)(r.azJ,{sx:{height:16,width:16,display:"flex",alignItems:"center"},children:e}),(0,a.jsx)(r.azJ,{children:n})]})}},960:(t,e,n)=>{n.r(e),n.d(e,{default:()=>it});var r=n(65043),a=n(89923),i=n(82291),o=n(87734),s=n(52185),l=n(6026),c=n(86150),u=n(21327),d=n(38643),p=n(88420),h=n(59101),f=n(11629),m=n.n(f),y=n(79686),x=n.n(y),v=n(19853),b=n.n(v),g=n(58387),j=n(68471),A=n(68892),S=n(94020),w=n(81519),k=n(38813),O=n(76307),P=n(240),E=n(6015),C=n(20202),D=["type","layout","connectNulls","ref"];function T(t){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},T(t)}function F(t,e){if(null==t)return{};var n,r,a=function(t,e){if(null==t)return{};var n,r,a={},i=Object.keys(t);for(r=0;r=0||(a[n]=t[n]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}function I(){return I=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);ns){c=[].concat(_(a.slice(0,u)),[s-d]);break}var p=c.length%2===0?[0,l]:[l];return[].concat(_(e.repeat(a,o)),_(c),p).map((function(t){return"".concat(t,"px")})).join(", ")})),R(B(t),"id",(0,O.NF)("recharts-line-")),R(B(t),"pathRef",(function(e){t.mainCurve=e})),R(B(t),"handleAnimationEnd",(function(){t.setState({isAnimationFinished:!0}),t.props.onAnimationEnd&&t.props.onAnimationEnd()})),R(B(t),"handleAnimationStart",(function(){t.setState({isAnimationFinished:!1}),t.props.onAnimationStart&&t.props.onAnimationStart()})),t}var n,a,i;return function(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&V(t,e)}(e,t),n=e,i=[{key:"getDerivedStateFromProps",value:function(t,e){return t.animationId!==e.prevAnimationId?{prevAnimationId:t.animationId,curPoints:t.points,prevPoints:e.curPoints}:t.points!==e.curPoints?{curPoints:t.points}:null}},{key:"repeat",value:function(t,e){for(var n=t.length%2!==0?[].concat(_(t),[0]):t,r=[],a=0;a0||!b()(o,r))?this.renderCurveWithAnimation(t,e):this.renderCurveStatically(r,t,e)}},{key:"render",value:function(){var t,e=this.props,n=e.hide,a=e.dot,i=e.points,o=e.className,s=e.xAxis,l=e.yAxis,c=e.top,u=e.left,d=e.width,p=e.height,h=e.isAnimationActive,f=e.id;if(n||!i||!i.length)return null;var m=this.state.isAnimationFinished,y=1===i.length,v=(0,g.A)("recharts-line",o),b=s&&s.allowDataOverflow,j=l&&l.allowDataOverflow,A=b||j,k=x()(f)?this.id:f,O=null!==(t=(0,P.J9)(a,!1))&&void 0!==t?t:{r:3,strokeWidth:2},E=O.r,C=void 0===E?3:E,D=O.strokeWidth,T=void 0===D?2:D,F=((0,P.ON)(a)?a:{}).clipDot,I=void 0===F||F,K=2*C+T;return r.createElement(S.W,{className:v},b||j?r.createElement("defs",null,r.createElement("clipPath",{id:"clipPath-".concat(k)},r.createElement("rect",{x:b?u:u-d/2,y:j?c:c-p/2,width:b?d:2*d,height:j?p:2*p})),!I&&r.createElement("clipPath",{id:"clipPath-dots-".concat(k)},r.createElement("rect",{x:u-K/2,y:c-K/2,width:d+K,height:p+K}))):null,!y&&this.renderCurve(A,k),this.renderErrorBar(A,k),(y||a)&&this.renderDots(A,I,k),(!h||m)&&w.Z.renderCallByParent(this.props,i))}}])&&W(n.prototype,a),i&&W(n,i),Object.defineProperty(n,"prototype",{writable:!1}),e}(r.PureComponent);R(Z,"displayName","Line"),R(Z,"defaultProps",{xAxisId:0,yAxisId:0,connectNulls:!1,activeDot:!0,dot:!0,legendType:"line",stroke:"#3182bd",strokeWidth:1,fill:"#fff",points:[],isAnimationActive:!E.m.isSsr,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",hide:!1,label:!1}),R(Z,"getComposedData",(function(t){var e=t.props,n=t.xAxis,r=t.yAxis,a=t.xAxisTicks,i=t.yAxisTicks,o=t.dataKey,s=t.bandSize,l=t.displayedData,c=t.offset,u=e.layout;return M({points:l.map((function(t,e){var l=(0,C.kr)(t,o);return"horizontal"===u?{x:(0,C.nb)({axis:n,ticks:a,bandSize:s,entry:t,index:e}),y:x()(l)?null:r.scale(l),value:l,payload:t}:{x:x()(l)?null:n.scale(l),y:(0,C.nb)({axis:r,ticks:i,bandSize:s,entry:t,index:e}),value:l,payload:t}})),layout:u},c)}));var U=n(3831),H=(0,p.gu)({chartName:"LineChart",GraphicalChild:Z,axisComponents:[{axisType:"xAxis",AxisComp:s.W},{axisType:"yAxis",AxisComp:l.h}],formatAxisMap:U.pr}),G=n(77938),$=n(99161),Q=n(64159),X=n(20554),Y=n(25903),tt=n(48793),et=n(55968),nt=n(56629),rt=n(53518),at=n(70579);const it=()=>{const t=(0,X.jL)(),[e,n]=(0,r.useState)("simple-tab-0"),[p,h]=(0,r.useState)(!0),[f,m]=(0,r.useState)(null),[y,x]=(0,r.useState)(!0),[v,b]=(0,r.useState)(null),[g,j]=(0,r.useState)(!0),[A,S]=(0,r.useState)(null),[w,k]=(0,r.useState)(!0),[O,P]=(0,r.useState)(null),[E,C]=(0,r.useState)(!0),D=(0,G._)($.Ms,[$.OV.KMS_STATUS]),T=(0,G._)($.Ms,[$.OV.KMS_METRICS])&&!p,F=(0,G._)($.Ms,[$.OV.KMS_APIS])&&!p,I=(0,G._)($.Ms,[$.OV.KMS_Version])&&!p;(0,r.useEffect)((()=>{D&&y&&nt.F.kms.kmsStatus().then((t=>{t.data&&(m(t.data),h("SecretKey"===t.data.name))})).catch((e=>{t((0,Q.C9)((0,rt.S)(e.error)))})).finally((()=>x(!1))),T&&g&&nt.F.kms.kmsMetrics().then((t=>{t.data&&b(t.data)})).catch((e=>{t((0,Q.C9)((0,rt.S)(e.error)))})).finally((()=>j(!1))),F&&w&&nt.F.kms.kmsapIs().then((t=>{t.data&&S(t.data)})).catch((e=>{t((0,Q.C9)((0,rt.S)(e.error)))})).finally((()=>k(!1))),I&&E&&nt.F.kms.kmsVersion().then((t=>{t.data&&P(t.data)})).catch((e=>{t((0,Q.C9)((0,rt.S)(e.error)))})).finally((()=>C(!1)))}),[t,D,y,T,g,F,w,I,E]);const K=(0,at.jsxs)(r.Fragment,{children:[(0,at.jsx)(a._xt,{children:"Status"}),(0,at.jsx)("br",{}),f&&(0,at.jsx)(a.xA9,{container:!0,children:(0,at.jsx)(a.xA9,{item:!0,xs:12,children:(0,at.jsx)(a.azJ,{sx:{display:"grid",gap:2,gridTemplateColumns:"2fr 1fr",gridAutoFlow:"row",["@media (max-width: ".concat(a.nmC.sm,"px)")]:{gridTemplateColumns:"1fr",gridAutoFlow:"dense"}},children:(0,at.jsxs)(a.azJ,{sx:{display:"grid",gap:2,gridTemplateColumns:"2fr 1fr",gridAutoFlow:"row",["@media (max-width: ".concat(a.nmC.sm,"px)")]:{gridTemplateColumns:"1fr",gridAutoFlow:"dense"}},children:[(0,at.jsx)(a.mZW,{label:"Name:",value:f.name}),O&&(0,at.jsx)(a.mZW,{label:"Version:",value:O.version}),(0,at.jsx)(a.mZW,{label:"Default Key ID:",value:f.defaultKeyID}),(0,at.jsx)(a.mZW,{label:"Key Management Service Endpoints:",value:(0,at.jsx)(r.Fragment,{children:f.endpoints&&f.endpoints.map(((t,e)=>(0,at.jsx)(Y.A,{icon:"online"===t.status?(0,at.jsx)(a.xhy,{}):(0,at.jsx)(a.aaC,{}),label:t.url},e)))})})]})})})})]}),M=(0,at.jsxs)(r.Fragment,{children:[(0,at.jsx)(a._xt,{children:"Supported API endpoints"}),(0,at.jsx)("br",{}),A&&(0,at.jsx)(a.xA9,{container:!0,children:(0,at.jsx)(a.xA9,{item:!0,xs:12,children:(0,at.jsx)(a.mZW,{label:"",value:(0,at.jsx)(a.azJ,{sx:{display:"grid",gap:2,gridTemplateColumns:"2fr 1fr",gridAutoFlow:"row",["@media (max-width: ".concat(a.nmC.sm,"px)")]:{gridTemplateColumns:"1fr",gridAutoFlow:"dense"}},children:A.results.map(((t,e)=>(0,at.jsx)(Y.A,{icon:(0,at.jsx)(a.xhy,{}),label:"".concat(t.path," - ").concat(t.method)},e)))})})})})]}),_=(0,at.jsx)(r.Fragment,{children:v&&(0,at.jsxs)(r.Fragment,{children:[(0,at.jsx)("h3",{children:"API Requests"}),(0,at.jsxs)(i.E,{width:730,height:250,data:[{label:"Success",success:v.requestOK},{label:"Failures",failures:v.requestFail},{label:"Errors",errors:v.requestErr},{label:"Active",active:v.requestActive}],children:[(0,at.jsx)(o.d,{strokeDasharray:"3 3"}),(0,at.jsx)(s.W,{dataKey:"label"}),(0,at.jsx)(l.h,{}),(0,at.jsx)(c.m,{}),(0,at.jsx)(u.s,{}),(0,at.jsx)(d.y,{dataKey:"success",fill:"green"}),(0,at.jsx)(d.y,{dataKey:"failures",fill:"red"}),(0,at.jsx)(d.y,{dataKey:"errors",fill:"black"}),(0,at.jsx)(d.y,{dataKey:"active",fill:"#8884d8"})]}),(0,at.jsx)("h3",{children:"Events"}),(0,at.jsxs)(i.E,{width:730,height:250,data:[{label:"Audit",audit:v.auditEvents},{label:"Errors",errors:v.errorEvents}],children:[(0,at.jsx)(o.d,{strokeDasharray:"3 3"}),(0,at.jsx)(s.W,{dataKey:"label"}),(0,at.jsx)(l.h,{}),(0,at.jsx)(c.m,{}),(0,at.jsx)(u.s,{}),(0,at.jsx)(d.y,{dataKey:"audit",fill:"green"}),(0,at.jsx)(d.y,{dataKey:"errors",fill:"black"})]}),(0,at.jsx)("h3",{children:"Latency Histogram"}),v.latencyHistogram&&(0,at.jsxs)(H,{width:730,height:250,data:v.latencyHistogram.map((t=>({...t,duration:"".concat(t.duration/1e6,"ms")}))),margin:{top:5,right:30,left:20,bottom:5},children:[(0,at.jsx)(o.d,{strokeDasharray:"3 3"}),(0,at.jsx)(s.W,{dataKey:"duration"}),(0,at.jsx)(l.h,{}),(0,at.jsx)(c.m,{}),(0,at.jsx)(u.s,{}),(0,at.jsx)(Z,{type:"monotone",dataKey:"total",stroke:"#8884d8",name:"Requests that took T ms or less"})]})]})});return(0,r.useEffect)((()=>{t((0,Q.ph)("kms_status"))}),[]),(0,at.jsxs)(r.Fragment,{children:[(0,at.jsx)(tt.A,{label:"Key Management Service",actions:(0,at.jsx)(et.A,{})}),(0,at.jsx)(a.Mxu,{children:(0,at.jsx)(a.tUM,{currentTabOrPath:e,onTabClick:t=>n(t),options:[{tabConfig:{label:"Status",id:"simple-tab-0"},content:(0,at.jsx)(a.azJ,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:K})},{tabConfig:{label:"APIs",id:"simple-tab-1",disabled:!F},content:(0,at.jsx)(a.azJ,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:M})},{tabConfig:{label:"Metrics",id:"simple-tab-2",disabled:!T},content:(0,at.jsx)(a.azJ,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:_})}]})})]})}},82291:(t,e,n)=>{n.d(e,{E:()=>l});var r=n(88420),a=n(38643),i=n(52185),o=n(6026),s=n(3831),l=(0,r.gu)({chartName:"BarChart",GraphicalChild:a.y,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:i.W},{axisType:"yAxis",AxisComp:o.h}],formatAxisMap:s.pr})}}]); +//# sourceMappingURL=960.41c7b96c.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/960.41c7b96c.chunk.js.map b/web-app/build/static/js/960.41c7b96c.chunk.js.map new file mode 100644 index 000000000..a8b3a5af4 --- /dev/null +++ b/web-app/build/static/js/960.41c7b96c.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/960.41c7b96c.chunk.js","mappings":"sJAwBA,MAyBA,EAzBsBA,IAAwD,IAAvD,KAAEC,EAAO,KAAI,MAAEC,EAAQ,MAA0BF,EACtE,OACEG,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CACFC,GAAI,CACFC,QAAS,OACTC,WAAY,SACZC,IAAK,EACLC,UAAW,GACXC,SAAA,EAEFC,EAAAA,EAAAA,KAACP,EAAAA,IAAG,CACFC,GAAI,CACFO,OAAQ,GACRC,MAAO,GACPP,QAAS,OACTC,WAAY,UACZG,SAEDT,KAEHU,EAAAA,EAAAA,KAACP,EAAAA,IAAG,CAAAM,SAAER,MACF,C,kVC7CNY,EAAY,CAAC,OAAQ,SAAU,eAAgB,OACnD,SAASC,EAAQC,GAAgC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAK,cAAcA,CAAG,EAAI,SAAUA,GAAK,OAAOA,GAAK,mBAAqBC,QAAUD,EAAEG,cAAgBF,QAAUD,IAAMC,OAAOG,UAAY,gBAAkBJ,CAAG,EAAGD,EAAQC,EAAI,CAC7T,SAASK,EAAyBC,EAAQC,GAAY,GAAc,MAAVD,EAAgB,MAAO,CAAC,EAAG,IAAkEE,EAAKC,EAAnEC,EACzF,SAAuCJ,EAAQC,GAAY,GAAc,MAAVD,EAAgB,MAAO,CAAC,EAAG,IAA2DE,EAAKC,EAA5DC,EAAS,CAAC,EAAOC,EAAaC,OAAOC,KAAKP,GAAqB,IAAKG,EAAI,EAAGA,EAAIE,EAAWG,OAAQL,IAAOD,EAAMG,EAAWF,GAAQF,EAASQ,QAAQP,IAAQ,IAAaE,EAAOF,GAAOF,EAAOE,IAAQ,OAAOE,CAAQ,CADhNM,CAA8BV,EAAQC,GAAuB,GAAIK,OAAOK,sBAAuB,CAAE,IAAIC,EAAmBN,OAAOK,sBAAsBX,GAAS,IAAKG,EAAI,EAAGA,EAAIS,EAAiBJ,OAAQL,IAAOD,EAAMU,EAAiBT,GAAQF,EAASQ,QAAQP,IAAQ,GAAkBI,OAAOR,UAAUe,qBAAqBC,KAAKd,EAAQE,KAAgBE,EAAOF,GAAOF,EAAOE,GAAQ,CAAE,OAAOE,CAAQ,CAE3e,SAASW,IAAiS,OAApRA,EAAWT,OAAOU,OAASV,OAAOU,OAAOC,OAAS,SAAUb,GAAU,IAAK,IAAID,EAAI,EAAGA,EAAIe,UAAUV,OAAQL,IAAK,CAAE,IAAIH,EAASkB,UAAUf,GAAI,IAAK,IAAID,KAAOF,EAAcM,OAAOR,UAAUqB,eAAeL,KAAKd,EAAQE,KAAQE,EAAOF,GAAOF,EAAOE,GAAU,CAAE,OAAOE,CAAQ,EAAUW,EAASK,MAAMC,KAAMH,UAAY,CAClV,SAASI,EAAQC,EAAGC,GAAK,IAAIC,EAAInB,OAAOC,KAAKgB,GAAI,GAAIjB,OAAOK,sBAAuB,CAAE,IAAIjB,EAAIY,OAAOK,sBAAsBY,GAAIC,IAAM9B,EAAIA,EAAEgC,QAAO,SAAUF,GAAK,OAAOlB,OAAOqB,yBAAyBJ,EAAGC,GAAGI,UAAY,KAAKH,EAAEI,KAAKT,MAAMK,EAAG/B,EAAI,CAAE,OAAO+B,CAAG,CAC9P,SAASK,EAAcP,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIN,UAAUV,OAAQgB,IAAK,CAAE,IAAIC,EAAI,MAAQP,UAAUM,GAAKN,UAAUM,GAAK,CAAC,EAAGA,EAAI,EAAIF,EAAQhB,OAAOmB,IAAI,GAAIM,SAAQ,SAAUP,GAAKQ,EAAgBT,EAAGC,EAAGC,EAAED,GAAK,IAAKlB,OAAO2B,0BAA4B3B,OAAO4B,iBAAiBX,EAAGjB,OAAO2B,0BAA0BR,IAAMH,EAAQhB,OAAOmB,IAAIM,SAAQ,SAAUP,GAAKlB,OAAO6B,eAAeZ,EAAGC,EAAGlB,OAAOqB,yBAAyBF,EAAGD,GAAK,GAAI,CAAE,OAAOD,CAAG,CACtb,SAASa,EAAmBC,GAAO,OAInC,SAA4BA,GAAO,GAAIC,MAAMC,QAAQF,GAAM,OAAOG,EAAkBH,EAAM,CAJhDI,CAAmBJ,IAG7D,SAA0BK,GAAQ,GAAsB,qBAAX/C,QAAmD,MAAzB+C,EAAK/C,OAAOC,WAA2C,MAAtB8C,EAAK,cAAuB,OAAOJ,MAAMK,KAAKD,EAAO,CAHxFE,CAAiBP,IAEtF,SAAqC3C,EAAGmD,GAAU,IAAKnD,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO8C,EAAkB9C,EAAGmD,GAAS,IAAIC,EAAIxC,OAAOR,UAAUiD,SAASjC,KAAKpB,GAAGsD,MAAM,GAAI,GAAc,WAANF,GAAkBpD,EAAEG,cAAaiD,EAAIpD,EAAEG,YAAYoD,MAAM,GAAU,QAANH,GAAqB,QAANA,EAAa,OAAOR,MAAMK,KAAKjD,GAAI,GAAU,cAANoD,GAAqB,2CAA2CI,KAAKJ,GAAI,OAAON,EAAkB9C,EAAGmD,EAAS,CAFjUM,CAA4Bd,IAC1H,WAAgC,MAAM,IAAIe,UAAU,uIAAyI,CAD3DC,EAAsB,CAKxJ,SAASb,EAAkBH,EAAKiB,IAAkB,MAAPA,GAAeA,EAAMjB,EAAI7B,UAAQ8C,EAAMjB,EAAI7B,QAAQ,IAAK,IAAIL,EAAI,EAAGoD,EAAO,IAAIjB,MAAMgB,GAAMnD,EAAImD,EAAKnD,IAAKoD,EAAKpD,GAAKkC,EAAIlC,GAAI,OAAOoD,CAAM,CAElL,SAASC,EAAkBpD,EAAQqD,GAAS,IAAK,IAAItD,EAAI,EAAGA,EAAIsD,EAAMjD,OAAQL,IAAK,CAAE,IAAIuD,EAAaD,EAAMtD,GAAIuD,EAAW9B,WAAa8B,EAAW9B,aAAc,EAAO8B,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMtD,OAAO6B,eAAe/B,EAAQyD,EAAeH,EAAWxD,KAAMwD,EAAa,CAAE,CAE5U,SAASI,EAAWrC,EAAG/B,EAAG6B,GAAK,OAAO7B,EAAIqE,EAAgBrE,GAC1D,SAAoCsE,EAAMlD,GAAQ,GAAIA,IAA2B,WAAlBrB,EAAQqB,IAAsC,oBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIsC,UAAU,4DAA+D,OAAOa,EAAuBD,EAAO,CADjOE,CAA2BzC,EAAG0C,IAA8BC,QAAQC,UAAU3E,EAAG6B,GAAK,GAAIwC,EAAgBtC,GAAG5B,aAAeH,EAAE0B,MAAMK,EAAGF,GAAK,CAE1M,SAAS4C,IAA8B,IAAM,IAAI1C,GAAK6C,QAAQxE,UAAUyE,QAAQzD,KAAKsD,QAAQC,UAAUC,QAAS,IAAI,WAAa,IAAK,CAAE,MAAO7C,GAAI,CAAE,OAAQ0C,EAA4B,WAAuC,QAAS1C,CAAG,IAAM,CAClP,SAASsC,EAAgBrE,GAA+J,OAA1JqE,EAAkBzD,OAAOkE,eAAiBlE,OAAOmE,eAAexD,OAAS,SAAyBvB,GAAK,OAAOA,EAAEgF,WAAapE,OAAOmE,eAAe/E,EAAI,EAAUqE,EAAgBrE,EAAI,CACnN,SAASuE,EAAuBD,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIW,eAAe,6DAAgE,OAAOX,CAAM,CAErK,SAASY,EAAgBlF,EAAGmF,GAA6I,OAAxID,EAAkBtE,OAAOkE,eAAiBlE,OAAOkE,eAAevD,OAAS,SAAyBvB,EAAGmF,GAAsB,OAAjBnF,EAAEgF,UAAYG,EAAUnF,CAAG,EAAUkF,EAAgBlF,EAAGmF,EAAI,CACvM,SAAS7C,EAAgB8C,EAAK5E,EAAK6E,GAA4L,OAAnL7E,EAAM2D,EAAe3D,MAAiB4E,EAAOxE,OAAO6B,eAAe2C,EAAK5E,EAAK,CAAE6E,MAAOA,EAAOnD,YAAY,EAAM+B,cAAc,EAAMC,UAAU,IAAkBkB,EAAI5E,GAAO6E,EAAgBD,CAAK,CAC3O,SAASjB,EAAepC,GAAK,IAAItB,EACjC,SAAsBsB,EAAGD,GAAK,GAAI,UAAY/B,EAAQgC,KAAOA,EAAG,OAAOA,EAAG,IAAIF,EAAIE,EAAE9B,OAAOqF,aAAc,QAAI,IAAWzD,EAAG,CAAE,IAAIpB,EAAIoB,EAAET,KAAKW,EAAGD,GAAK,WAAY,GAAI,UAAY/B,EAAQU,GAAI,OAAOA,EAAG,MAAM,IAAIiD,UAAU,+CAAiD,CAAE,OAAQ,WAAa5B,EAAIyD,OAASC,QAAQzD,EAAI,CADtR0D,CAAa1D,EAAG,UAAW,MAAO,UAAYhC,EAAQU,GAAKA,EAAI8E,OAAO9E,EAAI,CAoBxG,IAAIiF,EAAoB,SAAUC,GAEvC,SAASD,IACP,IAAIE,GAlCR,SAAyBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIpC,UAAU,oCAAwC,CAmCpJqC,CAAgBpE,KAAM+D,GACtB,IAAK,IAAIM,EAAOxE,UAAUV,OAAQmF,EAAO,IAAIrD,MAAMoD,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ1E,UAAU0E,GAsDzB,OAnDA5D,EAAgBiC,EADhBqB,EAAQxB,EAAWzC,KAAM+D,EAAM,GAAGS,OAAOF,KACM,QAAS,CACtDG,qBAAqB,EACrBC,YAAa,IAEf/D,EAAgBiC,EAAuBqB,GAAQ,iCAAiC,SAAUS,EAAavF,GACrG,MAAO,GAAGqF,OAAOrF,EAAQ,OAAOqF,OAAOE,EAAcvF,EAAQ,KAC/D,IACAwB,EAAgBiC,EAAuBqB,GAAQ,sBAAsB,SAAU9E,EAAQuF,EAAaC,GAClG,IAAIC,EAAaD,EAAME,QAAO,SAAUC,EAAKC,GAC3C,OAAOD,EAAMC,CACf,IAGA,IAAKH,EACH,OAAOX,EAAMe,8BAA8BN,EAAavF,GAM1D,IAJA,IAAI8F,EAAQC,KAAKC,MAAMhG,EAASyF,GAC5BQ,EAAejG,EAASyF,EACxBS,EAAaX,EAAcvF,EAC3BmG,EAAc,GACTxG,EAAI,EAAGyG,EAAM,EAAGzG,EAAI6F,EAAMxF,OAAQoG,GAAOZ,EAAM7F,KAAMA,EAC5D,GAAIyG,EAAMZ,EAAM7F,GAAKsG,EAAc,CACjCE,EAAc,GAAGd,OAAOzD,EAAmB4D,EAAMhD,MAAM,EAAG7C,IAAK,CAACsG,EAAeG,IAC/E,KACF,CAEF,IAAIC,EAAaF,EAAYnG,OAAS,IAAM,EAAI,CAAC,EAAGkG,GAAc,CAACA,GACnE,MAAO,GAAGb,OAAOzD,EAAmBgD,EAAK0B,OAAOd,EAAOM,IAASlE,EAAmBuE,GAAcE,GAAYE,KAAI,SAAUC,GACzH,MAAO,GAAGnB,OAAOmB,EAAM,KACzB,IAAGC,KAAK,KACV,IACAjF,EAAgBiC,EAAuBqB,GAAQ,MAAM4B,EAAAA,EAAAA,IAAS,mBAC9DlF,EAAgBiC,EAAuBqB,GAAQ,WAAW,SAAU6B,GAClE7B,EAAM8B,UAAYD,CACpB,IACAnF,EAAgBiC,EAAuBqB,GAAQ,sBAAsB,WACnEA,EAAM+B,SAAS,CACbvB,qBAAqB,IAEnBR,EAAM7B,MAAM6D,gBACdhC,EAAM7B,MAAM6D,gBAEhB,IACAtF,EAAgBiC,EAAuBqB,GAAQ,wBAAwB,WACrEA,EAAM+B,SAAS,CACbvB,qBAAqB,IAEnBR,EAAM7B,MAAM8D,kBACdjC,EAAM7B,MAAM8D,kBAEhB,IACOjC,CACT,CA1FF,IAAsBE,EAAagC,EAAYC,EAga7C,OA1ZF,SAAmBC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIvE,UAAU,sDAAyDsE,EAAS5H,UAAYQ,OAAOsH,OAAOD,GAAcA,EAAW7H,UAAW,CAAED,YAAa,CAAEkF,MAAO2C,EAAU9D,UAAU,EAAMD,cAAc,KAAWrD,OAAO6B,eAAeuF,EAAU,YAAa,CAAE9D,UAAU,IAAc+D,GAAY/C,EAAgB8C,EAAUC,EAAa,CAwBjcE,CAAUzC,EAAMC,GA9BIG,EA2FPJ,EA3FgCqC,EAoXzC,CAAC,CACHvH,IAAK,2BACL6E,MAAO,SAAkC+C,EAAWC,GAClD,OAAID,EAAUE,cAAgBD,EAAUE,gBAC/B,CACLA,gBAAiBH,EAAUE,YAC3BE,UAAWJ,EAAUK,OACrBC,WAAYL,EAAUG,WAGtBJ,EAAUK,SAAWJ,EAAUG,UAC1B,CACLA,UAAWJ,EAAUK,QAGlB,IACT,GACC,CACDjI,IAAK,SACL6E,MAAO,SAAgBiB,EAAOM,GAG5B,IAFA,IAAI+B,EAAYrC,EAAMxF,OAAS,IAAM,EAAI,GAAGqF,OAAOzD,EAAmB4D,GAAQ,CAAC,IAAMA,EACjFsC,EAAS,GACJnI,EAAI,EAAGA,EAAImG,IAASnG,EAC3BmI,EAAS,GAAGzC,OAAOzD,EAAmBkG,GAASlG,EAAmBiG,IAEpE,OAAOC,CACT,GACC,CACDpI,IAAK,gBACL6E,MAAO,SAAuBwD,EAAQ9E,GACpC,IAAI+E,EACJ,GAAkBC,EAAAA,eAAqBF,GACrCC,EAAuBC,EAAAA,aAAmBF,EAAQ9E,QAC7C,GAAIiF,IAAWH,GACpBC,EAAUD,EAAO9E,OACZ,CACL,IAAIkF,GAAYC,EAAAA,EAAAA,GAAK,oBAAuC,mBAAXL,EAAuBA,EAAOI,UAAY,IAC3FH,EAAuBC,EAAAA,cAAoBI,EAAAA,EAAK9H,EAAS,CAAC,EAAG0C,EAAO,CAClEkF,UAAWA,IAEf,CACA,OAAOH,CACT,KA9Z+BhB,EA2Fd,CAAC,CAClBtH,IAAK,oBACL6E,MAAO,WACL,GAAK1D,KAAKoC,MAAMqF,kBAAhB,CAGA,IAAI/C,EAAc1E,KAAK0H,iBACvB1H,KAAKgG,SAAS,CACZtB,YAAaA,GAHf,CAKF,GACC,CACD7F,IAAK,qBACL6E,MAAO,WACL,GAAK1D,KAAKoC,MAAMqF,kBAAhB,CAGA,IAAI/C,EAAc1E,KAAK0H,iBACnBhD,IAAgB1E,KAAK2H,MAAMjD,aAC7B1E,KAAKgG,SAAS,CACZtB,YAAaA,GAJjB,CAOF,GACC,CACD7F,IAAK,iBACL6E,MAAO,WACL,IAAIkE,EAAW5H,KAAK+F,UACpB,IACE,OAAO6B,GAAYA,EAASF,gBAAkBE,EAASF,kBAAoB,CAC7E,CAAE,MAAOG,GACP,OAAO,CACT,CACF,GACC,CACDhJ,IAAK,iBACL6E,MAAO,SAAwBoE,EAAUC,GACvC,GAAI/H,KAAKoC,MAAMqF,oBAAsBzH,KAAK2H,MAAMlD,oBAC9C,OAAO,KAET,IAAIuD,EAAchI,KAAKoC,MACrB0E,EAASkB,EAAYlB,OACrBmB,EAAQD,EAAYC,MACpBC,EAAQF,EAAYE,MACpBC,EAASH,EAAYG,OACrBpK,EAAWiK,EAAYjK,SACrBqK,GAAgBC,EAAAA,EAAAA,IAActK,EAAUuK,EAAAA,GAC5C,IAAKF,EACH,OAAO,KAET,IAAIG,EAAqB,SAA4BC,EAAWC,GAC9D,MAAO,CACLC,EAAGF,EAAUE,EACbC,EAAGH,EAAUG,EACbjF,MAAO8E,EAAU9E,MACjBkF,UAAUC,EAAAA,EAAAA,IAAkBL,EAAUM,QAASL,GAEnD,EACIM,EAAgB,CAClBC,SAAUlB,EAAW,iBAAiBtD,OAAOuD,EAAY,KAAO,MAElE,OAAoBX,EAAAA,cAAoB6B,EAAAA,EAAOF,EAAeX,EAAc1C,KAAI,SAAUwD,GACxF,OAAoB9B,EAAAA,aAAmB8B,EAAM,CAC3CrK,IAAK,OAAO2F,OAAO0E,EAAK9G,MAAMqG,SAC9BU,KAAMrC,EACNmB,MAAOA,EACPC,MAAOA,EACPC,OAAQA,EACRI,mBAAoBA,GAExB,IACF,GACC,CACD1J,IAAK,aACL6E,MAAO,SAAoBoE,EAAUsB,EAASrB,GAE5C,GADwB/H,KAAKoC,MAAMqF,oBACTzH,KAAK2H,MAAMlD,oBACnC,OAAO,KAET,IAAI4E,EAAerJ,KAAKoC,MACtBkH,EAAMD,EAAaC,IACnBxC,EAASuC,EAAavC,OACtB2B,EAAUY,EAAaZ,QACrBc,GAAYC,EAAAA,EAAAA,IAAYxJ,KAAKoC,OAAO,GACpCqH,GAAiBD,EAAAA,EAAAA,IAAYF,GAAK,GAClCI,EAAO5C,EAAOpB,KAAI,SAAUiE,EAAO7K,GACrC,IAAI8K,EAAWnJ,EAAcA,EAAcA,EAAc,CACvD5B,IAAK,OAAO2F,OAAO1F,GACnBqB,EAAG,GACFoJ,GAAYE,GAAiB,CAAC,EAAG,CAClC/F,MAAOiG,EAAMjG,MACb+E,QAASA,EACToB,GAAIF,EAAMjB,EACVoB,GAAIH,EAAMhB,EACVoB,MAAOjL,EACPgK,QAASa,EAAMb,UAEjB,OAAO/E,EAAKiG,cAAcV,EAAKM,EACjC,IACIK,EAAY,CACdjB,SAAUlB,EAAW,iBAAiBtD,OAAO4E,EAAU,GAAK,SAAS5E,OAAOuD,EAAY,KAAO,MAEjG,OAAoBX,EAAAA,cAAoB6B,EAAAA,EAAOvJ,EAAS,CACtD4H,UAAW,qBACXzI,IAAK,QACJoL,GAAYP,EACjB,GACC,CACD7K,IAAK,wBACL6E,MAAO,SAA+BoD,EAAQgB,EAAUC,EAAY3F,GAClE,IAAI8H,EAAelK,KAAKoC,MACtB+H,EAAOD,EAAaC,KACpBhC,EAAS+B,EAAa/B,OACtBiC,EAAeF,EAAaE,aAE5BC,GADMH,EAAaI,IACV5L,EAAyBwL,EAAc/L,IAC9CoM,EAAa9J,EAAcA,EAAcA,EAAc,CAAC,GAAG+I,EAAAA,EAAAA,IAAYa,GAAQ,IAAQ,CAAC,EAAG,CAC7FG,KAAM,OACNlD,UAAW,sBACX0B,SAAUlB,EAAW,iBAAiBtD,OAAOuD,EAAY,KAAO,KAChEjB,OAAQA,GACP1E,GAAQ,CAAC,EAAG,CACb+H,KAAMA,EACNhC,OAAQA,EACRiC,aAAcA,IAEhB,OAAoBhD,EAAAA,cAAoBqD,EAAAA,EAAO/K,EAAS,CAAC,EAAG6K,EAAY,CACtEG,QAAS1K,KAAK0K,UAElB,GACC,CACD7L,IAAK,2BACL6E,MAAO,SAAkCoE,EAAUC,GACjD,IAAI4C,EAAS3K,KACT4K,EAAe5K,KAAKoC,MACtB0E,EAAS8D,EAAa9D,OACtB+D,EAAkBD,EAAaC,gBAC/BpD,EAAoBmD,EAAanD,kBACjCqD,EAAiBF,EAAaE,eAC9BC,EAAoBH,EAAaG,kBACjCC,EAAkBJ,EAAaI,gBAC/BrE,EAAciE,EAAajE,YAC3BsE,EAAmBL,EAAaK,iBAChC/M,EAAQ0M,EAAa1M,MACrBD,EAAS2M,EAAa3M,OACpBiN,EAAclL,KAAK2H,MACrBZ,EAAamE,EAAYnE,WACzBrC,EAAcwG,EAAYxG,YAC5B,OAAoB0C,EAAAA,cAAoB+D,EAAAA,GAAS,CAC/CC,MAAON,EACPO,SAAUN,EACVO,SAAU7D,EACV8D,OAAQP,EACR1J,KAAM,CACJlB,EAAG,GAELoL,GAAI,CACFpL,EAAG,GAELvB,IAAK,QAAQ2F,OAAOmC,GACpBV,eAAgBjG,KAAKyL,mBACrBvF,iBAAkBlG,KAAK0L,uBACtB,SAAUrO,GACX,IAAI+C,EAAI/C,EAAK+C,EACb,GAAI2G,EAAY,CACd,IAAI4E,EAAuB5E,EAAW5H,OAAS2H,EAAO3H,OAClDyM,EAAW9E,EAAOpB,KAAI,SAAUiE,EAAOI,GACzC,IAAI8B,EAAiB3G,KAAKC,MAAM4E,EAAQ4B,GACxC,GAAI5E,EAAW8E,GAAiB,CAC9B,IAAIC,EAAO/E,EAAW8E,GAClBE,GAAgBC,EAAAA,EAAAA,IAAkBF,EAAKpD,EAAGiB,EAAMjB,GAChDuD,GAAgBD,EAAAA,EAAAA,IAAkBF,EAAKnD,EAAGgB,EAAMhB,GACpD,OAAOlI,EAAcA,EAAc,CAAC,EAAGkJ,GAAQ,CAAC,EAAG,CACjDjB,EAAGqD,EAAc3L,GACjBuI,EAAGsD,EAAc7L,IAErB,CAGA,GAAI6K,EAAkB,CACpB,IAAIiB,GAAiBF,EAAAA,EAAAA,IAA0B,EAAR9N,EAAWyL,EAAMjB,GACpDyD,GAAiBH,EAAAA,EAAAA,IAAkB/N,EAAS,EAAG0L,EAAMhB,GACzD,OAAOlI,EAAcA,EAAc,CAAC,EAAGkJ,GAAQ,CAAC,EAAG,CACjDjB,EAAGwD,EAAe9L,GAClBuI,EAAGwD,EAAe/L,IAEtB,CACA,OAAOK,EAAcA,EAAc,CAAC,EAAGkJ,GAAQ,CAAC,EAAG,CACjDjB,EAAGiB,EAAMjB,EACTC,EAAGgB,EAAMhB,GAEb,IACA,OAAOgC,EAAOyB,sBAAsBR,EAAU9D,EAAUC,EAC1D,CACA,IAEIsE,EADAC,GADeN,EAAAA,EAAAA,IAAkB,EAAGtH,EACxB6H,CAAanM,GAE7B,GAAIyK,EAAiB,CACnB,IAAIlG,EAAQ,GAAGH,OAAOqG,GAAiB2B,MAAM,aAAa9G,KAAI,SAAU+G,GACtE,OAAOC,WAAWD,EACpB,IACAJ,EAAyB1B,EAAOgC,mBAAmBL,EAAW5H,EAAaC,EAC7E,MACE0H,EAAyB1B,EAAO3F,8BAA8BN,EAAa4H,GAE7E,OAAO3B,EAAOyB,sBAAsBtF,EAAQgB,EAAUC,EAAY,CAChE8C,gBAAiBwB,GAErB,GACF,GACC,CACDxN,IAAK,cACL6E,MAAO,SAAqBoE,EAAUC,GACpC,IAAI6E,EAAe5M,KAAKoC,MACtB0E,EAAS8F,EAAa9F,OACtBW,EAAoBmF,EAAanF,kBAC/BoF,EAAe7M,KAAK2H,MACtBZ,EAAa8F,EAAa9F,WAC1BrC,EAAcmI,EAAanI,YAC7B,OAAI+C,GAAqBX,GAAUA,EAAO3H,UAAY4H,GAAcrC,EAAc,IAAMoI,IAAQ/F,EAAYD,IACnG9G,KAAK+M,yBAAyBjF,EAAUC,GAE1C/H,KAAKoM,sBAAsBtF,EAAQgB,EAAUC,EACtD,GACC,CACDlJ,IAAK,SACL6E,MAAO,WACL,IAAIsJ,EACAC,EAAejN,KAAKoC,MACtB8K,EAAOD,EAAaC,KACpB5D,EAAM2D,EAAa3D,IACnBxC,EAASmG,EAAanG,OACtBQ,EAAY2F,EAAa3F,UACzBW,EAAQgF,EAAahF,MACrBC,EAAQ+E,EAAa/E,MACrBiF,EAAMF,EAAaE,IACnBC,EAAOH,EAAaG,KACpBlP,EAAQ+O,EAAa/O,MACrBD,EAASgP,EAAahP,OACtBwJ,EAAoBwF,EAAaxF,kBACjC4F,EAAKJ,EAAaI,GACpB,GAAIH,IAASpG,IAAWA,EAAO3H,OAC7B,OAAO,KAET,IAAIsF,EAAsBzE,KAAK2H,MAAMlD,oBACjC6I,EAAmC,IAAlBxG,EAAO3H,OACxBoO,GAAahG,EAAAA,EAAAA,GAAK,gBAAiBD,GACnCkG,EAAYvF,GAASA,EAAMwF,kBAC3BC,EAAYxF,GAASA,EAAMuF,kBAC3B3F,EAAW0F,GAAaE,EACxB3F,EAAa4F,IAAMN,GAAMrN,KAAKqN,GAAKA,EACnCO,EAAqD,QAA5CZ,GAAexD,EAAAA,EAAAA,IAAYF,GAAK,UAAqC,IAAjB0D,EAA0BA,EAAe,CACtG7M,EAAG,EACH0N,YAAa,GAEfC,EAAUF,EAAMzN,EAChBA,OAAgB,IAAZ2N,EAAqB,EAAIA,EAC7BC,EAAoBH,EAAMC,YAC1BA,OAAoC,IAAtBE,EAA+B,EAAIA,EAEjDC,IADUC,EAAAA,EAAAA,IAAW3E,GAAOA,EAAM,CAAC,GACbF,QACtBA,OAA4B,IAAlB4E,GAAkCA,EAC1CE,EAAc,EAAJ/N,EAAQ0N,EACtB,OAAoBzG,EAAAA,cAAoB6B,EAAAA,EAAO,CAC7C3B,UAAWiG,GACVC,GAAaE,EAAyBtG,EAAAA,cAAoB,OAAQ,KAAmBA,EAAAA,cAAoB,WAAY,CACtHiG,GAAI,YAAY7I,OAAOuD,IACTX,EAAAA,cAAoB,OAAQ,CAC1CsB,EAAG8E,EAAYJ,EAAOA,EAAOlP,EAAQ,EACrCyK,EAAG+E,EAAYP,EAAMA,EAAMlP,EAAS,EACpCC,MAAOsP,EAAYtP,EAAgB,EAARA,EAC3BD,OAAQyP,EAAYzP,EAAkB,EAATA,MACzBmL,GAAwBhC,EAAAA,cAAoB,WAAY,CAC5DiG,GAAI,iBAAiB7I,OAAOuD,IACdX,EAAAA,cAAoB,OAAQ,CAC1CsB,EAAG0E,EAAOc,EAAU,EACpBvF,EAAGwE,EAAMe,EAAU,EACnBhQ,MAAOA,EAAQgQ,EACfjQ,OAAQA,EAASiQ,MACZ,MAAOZ,GAAkBtN,KAAKmO,YAAYrG,EAAUC,GAAa/H,KAAKoO,eAAetG,EAAUC,IAAcuF,GAAkBhE,IAAQtJ,KAAKqO,WAAWvG,EAAUsB,EAASrB,KAAeN,GAAqBhD,IAAwB6J,EAAAA,EAAUC,mBAAmBvO,KAAKoC,MAAO0E,GACxR,MAnX0E3E,EAAkBgC,EAAY1F,UAAW0H,GAAiBC,GAAajE,EAAkBgC,EAAaiC,GAAcnH,OAAO6B,eAAeqD,EAAa,YAAa,CAAE5B,UAAU,IAgarPwB,CACT,CApY+B,CAoY7ByK,EAAAA,eACF7N,EAAgBoD,EAAM,cAAe,QACrCpD,EAAgBoD,EAAM,eAAgB,CACpC0K,QAAS,EACTC,QAAS,EACTtE,cAAc,EACduE,WAAW,EACXrF,KAAK,EACLsF,WAAY,OACZC,OAAQ,UACRhB,YAAa,EACbrD,KAAM,OACN1D,OAAQ,GACRW,mBAAoBqH,EAAAA,EAAOC,MAC3B9D,kBAAkB,EAClBH,eAAgB,EAChBC,kBAAmB,KACnBC,gBAAiB,OACjBkC,MAAM,EACN3P,OAAO,IAUToD,EAAgBoD,EAAM,mBAAmB,SAAUiL,GACjD,IAAI5M,EAAQ4M,EAAM5M,MAChB6F,EAAQ+G,EAAM/G,MACdC,EAAQ8G,EAAM9G,MACd+G,EAAaD,EAAMC,WACnBC,EAAaF,EAAME,WACnBzG,EAAUuG,EAAMvG,QAChB0G,EAAWH,EAAMG,SACjBC,EAAgBJ,EAAMI,cACtBC,EAASL,EAAMK,OACblH,EAAS/F,EAAM+F,OA8BnB,OAAO1H,EAAc,CACnBqG,OA9BWsI,EAAc1J,KAAI,SAAUiE,EAAOI,GAC9C,IAAIrG,GAAQmF,EAAAA,EAAAA,IAAkBc,EAAOlB,GACrC,MAAe,eAAXN,EACK,CACLO,GAAG4G,EAAAA,EAAAA,IAAwB,CACzBC,KAAMtH,EACNuH,MAAOP,EACPE,SAAUA,EACVxF,MAAOA,EACPI,MAAOA,IAETpB,EAAGgF,IAAMjK,GAAS,KAAOwE,EAAMuH,MAAM/L,GACrCA,MAAOA,EACPoF,QAASa,GAGN,CACLjB,EAAGiF,IAAMjK,GAAS,KAAOuE,EAAMwH,MAAM/L,GACrCiF,GAAG2G,EAAAA,EAAAA,IAAwB,CACzBC,KAAMrH,EACNsH,MAAON,EACPC,SAAUA,EACVxF,MAAOA,EACPI,MAAOA,IAETrG,MAAOA,EACPoF,QAASa,EAEb,IAGExB,OAAQA,GACPkH,EACL,I,cCjfWK,GAAYC,EAAAA,EAAAA,IAAyB,CAC9CC,UAAW,YACXC,eAAgB9L,EAChB+L,eAAgB,CAAC,CACfC,SAAU,QACVC,SAAUC,EAAAA,GACT,CACDF,SAAU,QACVC,SAAUE,EAAAA,IAEZC,cAAeA,EAAAA,K,mHCmCjB,MAkXA,GAlXeC,KACb,MAAMC,GAAWC,EAAAA,EAAAA,OACVC,EAAQC,IAAaC,EAAAA,EAAAA,UAAiB,iBAEtCC,EAAgBC,IAAqBF,EAAAA,EAAAA,WAAkB,IACvDG,EAAQC,IAAaJ,EAAAA,EAAAA,UAAmC,OACxDK,EAAeC,IAAoBN,EAAAA,EAAAA,WAAkB,IACrDO,EAASC,IAAcR,EAAAA,EAAAA,UAAqB,OAC5CS,EAAgBC,IAAqBV,EAAAA,EAAAA,WAAkB,IACvDW,EAAMC,IAAWZ,EAAAA,EAAAA,UAAqB,OACtCa,EAAaC,IAAkBd,EAAAA,EAAAA,WAAkB,IACjDe,EAASC,IAAchB,EAAAA,EAAAA,UAAqB,OAC5CiB,EAAgBC,IAAqBlB,EAAAA,EAAAA,WAAkB,GAExDmB,GAAgBC,EAAAA,EAAAA,GAAcC,EAAAA,GAAqB,CACvDC,EAAAA,GAAWC,aAEPC,GACJJ,EAAAA,EAAAA,GAAcC,EAAAA,GAAqB,CAACC,EAAAA,GAAWG,gBAC9CxB,EACGyB,GACJN,EAAAA,EAAAA,GAAcC,EAAAA,GAAqB,CAACC,EAAAA,GAAWK,aAC9C1B,EACG2B,GACJR,EAAAA,EAAAA,GAAcC,EAAAA,GAAqB,CAACC,EAAAA,GAAWO,gBAC9C5B,GAEH6B,EAAAA,EAAAA,YAAU,KA0DJX,GAAiBd,GAxDnB0B,GAAAA,EAAIC,IACDC,YACAC,MAAM1L,IACDA,EAAOkC,OACT0H,EAAU5J,EAAOkC,MACjBwH,EAAuC,cAArB1J,EAAOkC,KAAKvH,MAChC,IAEDgR,OAAO/K,IACNwI,GAASwC,EAAAA,EAAAA,KAAqBC,EAAAA,GAAAA,GAAejL,EAAIkL,QAAQ,IAE1DC,SAAQ,IAAMjC,GAAiB,KAgDhCkB,GAAkBf,GA5CpBsB,GAAAA,EAAIC,IACDQ,aACAN,MAAM1L,IACDA,EAAOkC,MACT8H,EAAWhK,EAAOkC,KACpB,IAEDyJ,OAAO/K,IACNwI,GAASwC,EAAAA,EAAAA,KAAqBC,EAAAA,GAAAA,GAAejL,EAAIkL,QAAQ,IAE1DC,SAAQ,IAAM7B,GAAkB,KAqCjCgB,GAAeb,GAjCjBkB,GAAAA,EAAIC,IACDS,UACAP,MAAM1L,IACDA,EAAOkC,MACTkI,EAAQpK,EAAOkC,KACjB,IAEDyJ,OAAO/K,IACNwI,GAASwC,EAAAA,EAAAA,KAAqBC,EAAAA,GAAAA,GAAejL,EAAIkL,QAAQ,IAE1DC,SAAQ,IAAMzB,GAAe,KA0B9Bc,GAAkBX,GAtBpBc,GAAAA,EAAIC,IACDU,aACAR,MAAM1L,IACDA,EAAOkC,MACTsI,EAAWxK,EAAOkC,KACpB,IAEDyJ,OAAO/K,IACNwI,GAASwC,EAAAA,EAAAA,KAAqBC,EAAAA,GAAAA,GAAejL,EAAIkL,QAAQ,IAE1DC,SAAQ,IAAMrB,GAAkB,IAcrC,GACC,CACDtB,EACAuB,EACAd,EACAmB,EACAf,EACAiB,EACAb,EACAe,EACAX,IAGF,MAAM0B,GACJ5V,EAAAA,GAAAA,MAAC6V,EAAAA,SAAQ,CAAAtV,SAAA,EACPC,EAAAA,GAAAA,KAACsV,EAAAA,IAAY,CAAAvV,SAAC,YACdC,EAAAA,GAAAA,KAAA,SACC4S,IACC5S,EAAAA,GAAAA,KAACuV,EAAAA,IAAI,CAACC,WAAS,EAAAzV,UACbC,EAAAA,GAAAA,KAACuV,EAAAA,IAAI,CAACrK,MAAI,EAACuK,GAAI,GAAG1V,UAChBC,EAAAA,GAAAA,KAACP,EAAAA,IAAG,CACFC,GAAI,CACFC,QAAS,OACTE,IAAK,EACL6V,oBAAqB,UACrBC,aAAc,MACd,CAAC,sBAADnP,OAAuBoP,EAAAA,IAAYC,GAAE,QAAQ,CAC3CH,oBAAqB,MACrBC,aAAc,UAEhB5V,UAEFP,EAAAA,GAAAA,MAACC,EAAAA,IAAG,CACFC,GAAI,CACFC,QAAS,OACTE,IAAK,EACL6V,oBAAqB,UACrBC,aAAc,MACd,CAAC,sBAADnP,OAAuBoP,EAAAA,IAAYC,GAAE,QAAQ,CAC3CH,oBAAqB,MACrBC,aAAc,UAEhB5V,SAAA,EAEFC,EAAAA,GAAAA,KAAC8V,EAAAA,IAAS,CAACvW,MAAO,QAASmG,MAAOkN,EAAOhP,OACxC4P,IACCxT,EAAAA,GAAAA,KAAC8V,EAAAA,IAAS,CAACvW,MAAO,WAAYmG,MAAO8N,EAAQA,WAE/CxT,EAAAA,GAAAA,KAAC8V,EAAAA,IAAS,CACRvW,MAAO,kBACPmG,MAAOkN,EAAOmD,gBAEhB/V,EAAAA,GAAAA,KAAC8V,EAAAA,IAAS,CACRvW,MAAO,oCACPmG,OACE1F,EAAAA,GAAAA,KAACqV,EAAAA,SAAQ,CAAAtV,SACN6S,EAAOoD,WACNpD,EAAOoD,UAAUtO,KAAI,CAACxF,EAAQpB,KAC5Bd,EAAAA,GAAAA,KAACiW,EAAAA,EAAa,CAEZ3W,KACe,WAAb4C,EAAE0Q,QACA5S,EAAAA,GAAAA,KAACkW,EAAAA,IAAW,KAEZlW,EAAAA,GAAAA,KAACmW,EAAAA,IAAY,IAGjB5W,MAAO2C,EAAEkU,KARJtV,qBAsBzBuV,GACJ7W,EAAAA,GAAAA,MAAC6V,EAAAA,SAAQ,CAAAtV,SAAA,EACPC,EAAAA,GAAAA,KAACsV,EAAAA,IAAY,CAAAvV,SAAC,6BACdC,EAAAA,GAAAA,KAAA,SACCoT,IACCpT,EAAAA,GAAAA,KAACuV,EAAAA,IAAI,CAACC,WAAS,EAAAzV,UACbC,EAAAA,GAAAA,KAACuV,EAAAA,IAAI,CAACrK,MAAI,EAACuK,GAAI,GAAG1V,UAChBC,EAAAA,GAAAA,KAAC8V,EAAAA,IAAS,CACRvW,MAAO,GACPmG,OACE1F,EAAAA,GAAAA,KAACP,EAAAA,IAAG,CACFC,GAAI,CACFC,QAAS,OACTE,IAAK,EACL6V,oBAAqB,UACrBC,aAAc,MACd,CAAC,sBAADnP,OAAuBoP,EAAAA,IAAYC,GAAE,QAAQ,CAC3CH,oBAAqB,MACrBC,aAAc,UAEhB5V,SAEDqT,EAAKkD,QAAQ5O,KAAI,CAACxF,EAAQpB,KACzBd,EAAAA,GAAAA,KAACiW,EAAAA,EAAa,CAEZ3W,MAAMU,EAAAA,GAAAA,KAACkW,EAAAA,IAAW,IAClB3W,MAAK,GAAAiH,OAAKtE,EAAEqU,KAAI,OAAA/P,OAAMtE,EAAEsU,SAFnB1V,gBAuCnB2V,GACJzW,EAAAA,GAAAA,KAACqV,EAAAA,SAAQ,CAAAtV,SACNiT,IACCxT,EAAAA,GAAAA,MAAC6V,EAAAA,SAAQ,CAAAtV,SAAA,EACPC,EAAAA,GAAAA,KAAA,MAAAD,SAAI,kBACJP,EAAAA,GAAAA,MAACkX,EAAAA,EAAQ,CAACxW,MAAO,IAAKD,OAAQ,IAAKkL,KA7BlC,CACL,CAAE5L,MAAO,UAAWoX,QAAS3D,EAAQ4D,WACrC,CAAErX,MAAO,WAAYsX,SAAU7D,EAAQ8D,aACvC,CAAEvX,MAAO,SAAUwX,OAAQ/D,EAAQgE,YACnC,CAAEzX,MAAO,SAAU0X,OAAQjE,EAAQkE,gBAyB+BnX,SAAA,EAC5DC,EAAAA,GAAAA,KAACmX,EAAAA,EAAa,CAACtK,gBAAgB,SAC/B7M,EAAAA,GAAAA,KAACiS,EAAAA,EAAK,CAACxH,QAAQ,WACfzK,EAAAA,GAAAA,KAACkS,EAAAA,EAAK,KACNlS,EAAAA,GAAAA,KAACoX,EAAAA,EAAO,KACRpX,EAAAA,GAAAA,KAACqX,EAAAA,EAAM,KACPrX,EAAAA,GAAAA,KAACsX,EAAAA,EAAG,CAAC7M,QAAQ,UAAU+B,KAAK,WAC5BxM,EAAAA,GAAAA,KAACsX,EAAAA,EAAG,CAAC7M,QAAQ,WAAW+B,KAAK,SAC7BxM,EAAAA,GAAAA,KAACsX,EAAAA,EAAG,CAAC7M,QAAQ,SAAS+B,KAAK,WAC3BxM,EAAAA,GAAAA,KAACsX,EAAAA,EAAG,CAAC7M,QAAQ,SAAS+B,KAAK,gBAG7BxM,EAAAA,GAAAA,KAAA,MAAAD,SAAI,YACJP,EAAAA,GAAAA,MAACkX,EAAAA,EAAQ,CAACxW,MAAO,IAAKD,OAAQ,IAAKkL,KAjClC,CACL,CAAE5L,MAAO,QAASgY,MAAOvE,EAAQwE,aACjC,CAAEjY,MAAO,SAAUwX,OAAQ/D,EAAQyE,cA+B0B1X,SAAA,EACvDC,EAAAA,GAAAA,KAACmX,EAAAA,EAAa,CAACtK,gBAAgB,SAC/B7M,EAAAA,GAAAA,KAACiS,EAAAA,EAAK,CAACxH,QAAQ,WACfzK,EAAAA,GAAAA,KAACkS,EAAAA,EAAK,KACNlS,EAAAA,GAAAA,KAACoX,EAAAA,EAAO,KACRpX,EAAAA,GAAAA,KAACqX,EAAAA,EAAM,KACPrX,EAAAA,GAAAA,KAACsX,EAAAA,EAAG,CAAC7M,QAAQ,QAAQ+B,KAAK,WAC1BxM,EAAAA,GAAAA,KAACsX,EAAAA,EAAG,CAAC7M,QAAQ,SAAS+B,KAAK,cAE7BxM,EAAAA,GAAAA,KAAA,MAAAD,SAAI,sBACHiT,EAAQ0E,mBACPlY,EAAAA,GAAAA,MAACkS,EAAS,CACRxR,MAAO,IACPD,OAAQ,IACRkL,KAxCH6H,EAAQ0E,iBAAiBhQ,KAAKiQ,IAC5B,IACFA,EACHtK,SAAS,GAAD7G,OAAKmR,EAAEtK,SAAW,IAAO,UAsC3BuK,OAAQ,CAAEzI,IAAK,EAAG0I,MAAO,GAAIzI,KAAM,GAAI0I,OAAQ,GAAI/X,SAAA,EAEnDC,EAAAA,GAAAA,KAACmX,EAAAA,EAAa,CAACtK,gBAAgB,SAC/B7M,EAAAA,GAAAA,KAACiS,EAAAA,EAAK,CAACxH,QAAQ,cACfzK,EAAAA,GAAAA,KAACkS,EAAAA,EAAK,KACNlS,EAAAA,GAAAA,KAACoX,EAAAA,EAAO,KACRpX,EAAAA,GAAAA,KAACqX,EAAAA,EAAM,KACPrX,EAAAA,GAAAA,KAAC+F,EAAI,CACHoG,KAAK,WACL1B,QAAQ,QACRoG,OAAO,UACPjN,KAAM,4CAcpB,OALA2Q,EAAAA,EAAAA,YAAU,KACRlC,GAAS0F,EAAAA,EAAAA,IAAY,cAAc,GAElC,KAGDvY,EAAAA,GAAAA,MAAC6V,EAAAA,SAAQ,CAAAtV,SAAA,EACPC,EAAAA,GAAAA,KAACgY,GAAAA,EAAiB,CAChBzY,MAAM,yBACN0Y,SAASjY,EAAAA,GAAAA,KAACkY,GAAAA,EAAQ,OAGpBlY,EAAAA,GAAAA,KAACmY,EAAAA,IAAU,CAAApY,UACTC,EAAAA,GAAAA,KAACoY,EAAAA,IAAI,CACHC,iBAAkB9F,EAClB+F,WAAaC,GAAa/F,EAAU+F,GACpCC,QAAS,CACP,CACEC,UAAW,CAAElZ,MAAO,SAAU8P,GAAI,gBAClCqJ,SACE1Y,EAAAA,GAAAA,KAACP,EAAAA,IAAG,CACFkZ,aAAW,EACXjZ,GAAI,CACFC,QAAS,OACTiZ,SAAU,SACVC,QAAS,QACT9Y,SAEDqV,KAIP,CACEqD,UAAW,CACTlZ,MAAO,OACP8P,GAAI,eACJyJ,UAAW3E,GAEbuE,SACE1Y,EAAAA,GAAAA,KAACP,EAAAA,IAAG,CACFkZ,aAAW,EACXjZ,GAAI,CACFC,QAAS,OACTiZ,SAAU,SACVC,QAAS,QACT9Y,SAEDsW,KAIP,CACEoC,UAAW,CACTlZ,MAAO,UACP8P,GAAI,eACJyJ,UAAW7E,GAEbyE,SACE1Y,EAAAA,GAAAA,KAACP,EAAAA,IAAG,CACFkZ,aAAW,EACXjZ,GAAI,CACFC,QAAS,OACTiZ,SAAU,SACVC,QAAS,QACT9Y,SAED0W,YAOJ,C,4FC3ZJC,GAAW/E,EAAAA,EAAAA,IAAyB,CAC7CC,UAAW,WACXC,eAAgByF,EAAAA,EAChByB,wBAAyB,OACzBC,0BAA2B,CAAC,OAAQ,QACpClH,eAAgB,CAAC,CACfC,SAAU,QACVC,SAAUC,EAAAA,GACT,CACDF,SAAU,QACVC,SAAUE,EAAAA,IAEZC,cAAeA,EAAAA,I","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/LabelWithIcon.tsx","../node_modules/recharts/es6/cartesian/Line.js","../node_modules/recharts/es6/chart/LineChart.js","screens/Console/KMS/Status.tsx","../node_modules/recharts/es6/chart/BarChart.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"mds\";\n\ntype LabelWithIconProps = {\n icon: React.ReactNode | null;\n label: React.ReactNode | null;\n};\n\nconst LabelWithIcon = ({ icon = null, label = null }: LabelWithIconProps) => {\n return (\n \n \n {icon}\n \n {label}\n \n );\n};\n\nexport default LabelWithIcon;\n","var _excluded = [\"type\", \"layout\", \"connectNulls\", \"ref\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Line\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport isFunction from 'lodash/isFunction';\nimport isNil from 'lodash/isNil';\nimport isEqual from 'lodash/isEqual';\nimport clsx from 'clsx';\nimport { Curve } from '../shape/Curve';\nimport { Dot } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { ErrorBar } from './ErrorBar';\nimport { uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType, filterProps, isDotProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nexport var Line = /*#__PURE__*/function (_PureComponent) {\n _inherits(Line, _PureComponent);\n function Line() {\n var _this;\n _classCallCheck(this, Line);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Line, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: true,\n totalLength: 0\n });\n _defineProperty(_assertThisInitialized(_this), \"generateSimpleStrokeDasharray\", function (totalLength, length) {\n return \"\".concat(length, \"px \").concat(totalLength - length, \"px\");\n });\n _defineProperty(_assertThisInitialized(_this), \"getStrokeDasharray\", function (length, totalLength, lines) {\n var lineLength = lines.reduce(function (pre, next) {\n return pre + next;\n });\n\n // if lineLength is 0 return the default when no strokeDasharray is provided\n if (!lineLength) {\n return _this.generateSimpleStrokeDasharray(totalLength, length);\n }\n var count = Math.floor(length / lineLength);\n var remainLength = length % lineLength;\n var restLength = totalLength - length;\n var remainLines = [];\n for (var i = 0, sum = 0; i < lines.length; sum += lines[i], ++i) {\n if (sum + lines[i] > remainLength) {\n remainLines = [].concat(_toConsumableArray(lines.slice(0, i)), [remainLength - sum]);\n break;\n }\n }\n var emptyLines = remainLines.length % 2 === 0 ? [0, restLength] : [restLength];\n return [].concat(_toConsumableArray(Line.repeat(lines, count)), _toConsumableArray(remainLines), emptyLines).map(function (line) {\n return \"\".concat(line, \"px\");\n }).join(', ');\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", uniqueId('recharts-line-'));\n _defineProperty(_assertThisInitialized(_this), \"pathRef\", function (node) {\n _this.mainCurve = node;\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function () {\n _this.setState({\n isAnimationFinished: true\n });\n if (_this.props.onAnimationEnd) {\n _this.props.onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function () {\n _this.setState({\n isAnimationFinished: false\n });\n if (_this.props.onAnimationStart) {\n _this.props.onAnimationStart();\n }\n });\n return _this;\n }\n _createClass(Line, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!this.props.isAnimationActive) {\n return;\n }\n var totalLength = this.getTotalLength();\n this.setState({\n totalLength: totalLength\n });\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (!this.props.isAnimationActive) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength !== this.state.totalLength) {\n this.setState({\n totalLength: totalLength\n });\n }\n }\n }, {\n key: \"getTotalLength\",\n value: function getTotalLength() {\n var curveDom = this.mainCurve;\n try {\n return curveDom && curveDom.getTotalLength && curveDom.getTotalLength() || 0;\n } catch (err) {\n return 0;\n }\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar(needClip, clipPathId) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props = this.props,\n points = _this$props.points,\n xAxis = _this$props.xAxis,\n yAxis = _this$props.yAxis,\n layout = _this$props.layout,\n children = _this$props.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: getValueByDataKey(dataPoint.payload, dataKey)\n };\n };\n var errorBarProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, errorBarProps, errorBarItems.map(function (item) {\n return /*#__PURE__*/React.cloneElement(item, {\n key: \"bar-\".concat(item.props.dataKey),\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n dataPointFormatter: dataPointFormatter\n });\n }));\n }\n }, {\n key: \"renderDots\",\n value: function renderDots(needClip, clipDot, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props2 = this.props,\n dot = _this$props2.dot,\n points = _this$props2.points,\n dataKey = _this$props2.dataKey;\n var lineProps = filterProps(this.props, false);\n var customDotProps = filterProps(dot, true);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread(_objectSpread(_objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, lineProps), customDotProps), {}, {\n value: entry.value,\n dataKey: dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n payload: entry.payload\n });\n return Line.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipDot ? '' : 'dots-').concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-line-dots\",\n key: \"dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderCurveStatically\",\n value: function renderCurveStatically(points, needClip, clipPathId, props) {\n var _this$props3 = this.props,\n type = _this$props3.type,\n layout = _this$props3.layout,\n connectNulls = _this$props3.connectNulls,\n ref = _this$props3.ref,\n others = _objectWithoutProperties(_this$props3, _excluded);\n var curveProps = _objectSpread(_objectSpread(_objectSpread({}, filterProps(others, true)), {}, {\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null,\n points: points\n }, props), {}, {\n type: type,\n layout: layout,\n connectNulls: connectNulls\n });\n return /*#__PURE__*/React.createElement(Curve, _extends({}, curveProps, {\n pathRef: this.pathRef\n }));\n }\n }, {\n key: \"renderCurveWithAnimation\",\n value: function renderCurveWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n var _this$props4 = this.props,\n points = _this$props4.points,\n strokeDasharray = _this$props4.strokeDasharray,\n isAnimationActive = _this$props4.isAnimationActive,\n animationBegin = _this$props4.animationBegin,\n animationDuration = _this$props4.animationDuration,\n animationEasing = _this$props4.animationEasing,\n animationId = _this$props4.animationId,\n animateNewValues = _this$props4.animateNewValues,\n width = _this$props4.width,\n height = _this$props4.height;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n totalLength = _this$state.totalLength;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"line-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n var stepData = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n\n // magic number of faking previous x and y location\n if (animateNewValues) {\n var _interpolatorX = interpolateNumber(width * 2, entry.x);\n var _interpolatorY = interpolateNumber(height / 2, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: _interpolatorX(t),\n y: _interpolatorY(t)\n });\n }\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: entry.x,\n y: entry.y\n });\n });\n return _this2.renderCurveStatically(stepData, needClip, clipPathId);\n }\n var interpolator = interpolateNumber(0, totalLength);\n var curLength = interpolator(t);\n var currentStrokeDasharray;\n if (strokeDasharray) {\n var lines = \"\".concat(strokeDasharray).split(/[,\\s]+/gim).map(function (num) {\n return parseFloat(num);\n });\n currentStrokeDasharray = _this2.getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = _this2.generateSimpleStrokeDasharray(totalLength, curLength);\n }\n return _this2.renderCurveStatically(points, needClip, clipPathId, {\n strokeDasharray: currentStrokeDasharray\n });\n });\n }\n }, {\n key: \"renderCurve\",\n value: function renderCurve(needClip, clipPathId) {\n var _this$props5 = this.props,\n points = _this$props5.points,\n isAnimationActive = _this$props5.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n totalLength = _this$state2.totalLength;\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !isEqual(prevPoints, points))) {\n return this.renderCurveWithAnimation(needClip, clipPathId);\n }\n return this.renderCurveStatically(points, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _filterProps;\n var _this$props6 = this.props,\n hide = _this$props6.hide,\n dot = _this$props6.dot,\n points = _this$props6.points,\n className = _this$props6.className,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n top = _this$props6.top,\n left = _this$props6.left,\n width = _this$props6.width,\n height = _this$props6.height,\n isAnimationActive = _this$props6.isAnimationActive,\n id = _this$props6.id;\n if (hide || !points || !points.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = clsx('recharts-line', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = isNil(id) ? this.id : id;\n var _ref2 = (_filterProps = filterProps(dot, false)) !== null && _filterProps !== void 0 ? _filterProps : {\n r: 3,\n strokeWidth: 2\n },\n _ref2$r = _ref2.r,\n r = _ref2$r === void 0 ? 3 : _ref2$r,\n _ref2$strokeWidth = _ref2.strokeWidth,\n strokeWidth = _ref2$strokeWidth === void 0 ? 2 : _ref2$strokeWidth;\n var _ref3 = isDotProps(dot) ? dot : {},\n _ref3$clipDot = _ref3.clipDot,\n clipDot = _ref3$clipDot === void 0 ? true : _ref3$clipDot;\n var dotSize = r * 2 + strokeWidth;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n })), !clipDot && /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-dots-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left - dotSize / 2,\n y: top - dotSize / 2,\n width: width + dotSize,\n height: height + dotSize\n }))) : null, !hasSinglePoint && this.renderCurve(needClip, clipPathId), this.renderErrorBar(needClip, clipPathId), (hasSinglePoint || dot) && this.renderDots(needClip, clipDot, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n prevPoints: prevState.curPoints\n };\n }\n if (nextProps.points !== prevState.curPoints) {\n return {\n curPoints: nextProps.points\n };\n }\n return null;\n }\n }, {\n key: \"repeat\",\n value: function repeat(lines, count) {\n var linesUnit = lines.length % 2 !== 0 ? [].concat(_toConsumableArray(lines), [0]) : lines;\n var result = [];\n for (var i = 0; i < count; ++i) {\n result = [].concat(_toConsumableArray(result), _toConsumableArray(linesUnit));\n }\n return result;\n }\n }, {\n key: \"renderDotItem\",\n value: function renderDotItem(option, props) {\n var dotItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dotItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dotItem = option(props);\n } else {\n var className = clsx('recharts-line-dot', typeof option !== 'boolean' ? option.className : '');\n dotItem = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n className: className\n }));\n }\n return dotItem;\n }\n }]);\n return Line;\n}(PureComponent);\n_defineProperty(Line, \"displayName\", 'Line');\n_defineProperty(Line, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n connectNulls: false,\n activeDot: true,\n dot: true,\n legendType: 'line',\n stroke: '#3182bd',\n strokeWidth: 1,\n fill: '#fff',\n points: [],\n isAnimationActive: !Global.isSsr,\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n hide: false,\n label: false\n});\n/**\n * Compose the data of each group\n * @param {Object} props The props from the component\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {String} dataKey The unique key of a group\n * @return {Array} Composed data\n */\n_defineProperty(Line, \"getComposedData\", function (_ref4) {\n var props = _ref4.props,\n xAxis = _ref4.xAxis,\n yAxis = _ref4.yAxis,\n xAxisTicks = _ref4.xAxisTicks,\n yAxisTicks = _ref4.yAxisTicks,\n dataKey = _ref4.dataKey,\n bandSize = _ref4.bandSize,\n displayedData = _ref4.displayedData,\n offset = _ref4.offset;\n var layout = props.layout;\n var points = displayedData.map(function (entry, index) {\n var value = getValueByDataKey(entry, dataKey);\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: isNil(value) ? null : yAxis.scale(value),\n value: value,\n payload: entry\n };\n }\n return {\n x: isNil(value) ? null : xAxis.scale(value),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n return _objectSpread({\n points: points,\n layout: layout\n }, offset);\n});","/**\n * @fileOverview Line Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Line } from '../cartesian/Line';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var LineChart = generateCategoricalChart({\n chartName: 'LineChart',\n GraphicalChild: Line,\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Box,\n breakPoints,\n DisabledIcon,\n EnabledIcon,\n Grid,\n PageLayout,\n SectionTitle,\n Tabs,\n ValuePair,\n} from \"mds\";\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport LabelWithIcon from \"../Buckets/BucketDetails/SummaryItems/LabelWithIcon\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { api } from \"api\";\nimport { KmsStatusResponse } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\nconst Status = () => {\n const dispatch = useAppDispatch();\n const [curTab, setCurTab] = useState(\"simple-tab-0\");\n\n const [isKMSSecretKey, setIsKMSSecretKey] = useState(true);\n const [status, setStatus] = useState(null);\n const [loadingStatus, setLoadingStatus] = useState(true);\n const [metrics, setMetrics] = useState(null);\n const [loadingMetrics, setLoadingMetrics] = useState(true);\n const [apis, setAPIs] = useState(null);\n const [loadingAPIs, setLoadingAPIs] = useState(true);\n const [version, setVersion] = useState(null);\n const [loadingVersion, setLoadingVersion] = useState(true);\n\n const displayStatus = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.KMS_STATUS,\n ]);\n const displayMetrics =\n hasPermission(CONSOLE_UI_RESOURCE, [IAM_SCOPES.KMS_METRICS]) &&\n !isKMSSecretKey;\n const displayAPIs =\n hasPermission(CONSOLE_UI_RESOURCE, [IAM_SCOPES.KMS_APIS]) &&\n !isKMSSecretKey;\n const displayVersion =\n hasPermission(CONSOLE_UI_RESOURCE, [IAM_SCOPES.KMS_Version]) &&\n !isKMSSecretKey;\n\n useEffect(() => {\n const loadStatus = () => {\n api.kms\n .kmsStatus()\n .then((result) => {\n if (result.data) {\n setStatus(result.data);\n setIsKMSSecretKey(result.data.name === \"SecretKey\");\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n })\n .finally(() => setLoadingStatus(false));\n };\n\n const loadMetrics = () => {\n api.kms\n .kmsMetrics()\n .then((result) => {\n if (result.data) {\n setMetrics(result.data);\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n })\n .finally(() => setLoadingMetrics(false));\n };\n\n const loadAPIs = () => {\n api.kms\n .kmsapIs()\n .then((result: any) => {\n if (result.data) {\n setAPIs(result.data);\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n })\n .finally(() => setLoadingAPIs(false));\n };\n\n const loadVersion = () => {\n api.kms\n .kmsVersion()\n .then((result: any) => {\n if (result.data) {\n setVersion(result.data);\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n })\n .finally(() => setLoadingVersion(false));\n };\n\n if (displayStatus && loadingStatus) {\n loadStatus();\n }\n if (displayMetrics && loadingMetrics) {\n loadMetrics();\n }\n if (displayAPIs && loadingAPIs) {\n loadAPIs();\n }\n if (displayVersion && loadingVersion) {\n loadVersion();\n }\n }, [\n dispatch,\n displayStatus,\n loadingStatus,\n displayMetrics,\n loadingMetrics,\n displayAPIs,\n loadingAPIs,\n displayVersion,\n loadingVersion,\n ]);\n\n const statusPanel = (\n \n Status\n
\n {status && (\n \n \n \n \n \n {version && (\n \n )}\n \n \n {status.endpoints &&\n status.endpoints.map((e: any, i: number) => (\n \n ) : (\n \n )\n }\n label={e.url}\n />\n ))}\n
\n }\n />\n \n \n \n \n )}\n \n );\n\n const apisPanel = (\n \n Supported API endpoints\n
\n {apis && (\n \n \n \n {apis.results.map((e: any, i: number) => (\n }\n label={`${e.path} - ${e.method}`}\n />\n ))}\n \n }\n />\n \n \n )}\n
\n );\n\n const getAPIRequestsData = () => {\n return [\n { label: \"Success\", success: metrics.requestOK },\n { label: \"Failures\", failures: metrics.requestFail },\n { label: \"Errors\", errors: metrics.requestErr },\n { label: \"Active\", active: metrics.requestActive },\n ];\n };\n\n const getEventsData = () => {\n return [\n { label: \"Audit\", audit: metrics.auditEvents },\n { label: \"Errors\", errors: metrics.errorEvents },\n ];\n };\n\n const getHistogramData = () => {\n return metrics.latencyHistogram.map((h: any) => {\n return {\n ...h,\n duration: `${h.duration / 1000000}ms`,\n };\n });\n };\n\n const metricsPanel = (\n \n {metrics && (\n \n

API Requests

\n \n \n \n \n \n \n \n \n \n \n \n\n

Events

\n \n \n \n \n \n \n \n \n \n

Latency Histogram

\n {metrics.latencyHistogram && (\n \n \n \n \n \n \n \n \n )}\n
\n )}\n
\n );\n\n useEffect(() => {\n dispatch(setHelpName(\"kms_status\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n }\n />\n\n \n setCurTab(newValue)}\n options={[\n {\n tabConfig: { label: \"Status\", id: \"simple-tab-0\" },\n content: (\n \n {statusPanel}\n \n ),\n },\n {\n tabConfig: {\n label: \"APIs\",\n id: \"simple-tab-1\",\n disabled: !displayAPIs,\n },\n content: (\n \n {apisPanel}\n \n ),\n },\n {\n tabConfig: {\n label: \"Metrics\",\n id: \"simple-tab-2\",\n disabled: !displayMetrics,\n },\n content: (\n \n {metricsPanel}\n \n ),\n },\n ]}\n />\n \n \n );\n};\n\nexport default Status;\n","/**\n * @fileOverview Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Bar } from '../cartesian/Bar';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var BarChart = generateCategoricalChart({\n chartName: 'BarChart',\n GraphicalChild: Bar,\n defaultTooltipEventType: 'axis',\n validateTooltipEventTypes: ['axis', 'item'],\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});"],"names":["_ref","icon","label","_jsxs","Box","sx","display","alignItems","gap","marginTop","children","_jsx","height","width","_excluded","_typeof","o","Symbol","iterator","constructor","prototype","_objectWithoutProperties","source","excluded","key","i","target","sourceKeys","Object","keys","length","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","call","_extends","assign","bind","arguments","hasOwnProperty","apply","this","ownKeys","e","r","t","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toConsumableArray","arr","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","minLen","n","toString","slice","name","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","arr2","_defineProperties","props","descriptor","configurable","writable","_toPropertyKey","_callSuper","_getPrototypeOf","self","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","Boolean","valueOf","setPrototypeOf","getPrototypeOf","__proto__","ReferenceError","_setPrototypeOf","p","obj","value","toPrimitive","String","Number","_toPrimitive","Line","_PureComponent","_this","instance","Constructor","_classCallCheck","_len","args","_key","concat","isAnimationFinished","totalLength","lines","lineLength","reduce","pre","next","generateSimpleStrokeDasharray","count","Math","floor","remainLength","restLength","remainLines","sum","emptyLines","repeat","map","line","join","uniqueId","node","mainCurve","setState","onAnimationEnd","onAnimationStart","protoProps","staticProps","subClass","superClass","create","_inherits","nextProps","prevState","animationId","prevAnimationId","curPoints","points","prevPoints","linesUnit","result","option","dotItem","React","isFunction","className","clsx","Dot","isAnimationActive","getTotalLength","state","curveDom","err","needClip","clipPathId","_this$props","xAxis","yAxis","layout","errorBarItems","findAllByType","ErrorBar","dataPointFormatter","dataPoint","dataKey","x","y","errorVal","getValueByDataKey","payload","errorBarProps","clipPath","Layer","item","data","clipDot","_this$props2","dot","lineProps","filterProps","customDotProps","dots","entry","dotProps","cx","cy","index","renderDotItem","dotsProps","_this$props3","type","connectNulls","others","ref","curveProps","fill","Curve","pathRef","_this2","_this$props4","strokeDasharray","animationBegin","animationDuration","animationEasing","animateNewValues","_this$state","Animate","begin","duration","isActive","easing","to","handleAnimationEnd","handleAnimationStart","prevPointsDiffFactor","stepData","prevPointIndex","prev","interpolatorX","interpolateNumber","interpolatorY","_interpolatorX","_interpolatorY","renderCurveStatically","currentStrokeDasharray","curLength","interpolator","split","num","parseFloat","getStrokeDasharray","_this$props5","_this$state2","isEqual","renderCurveWithAnimation","_filterProps","_this$props6","hide","top","left","id","hasSinglePoint","layerClass","needClipX","allowDataOverflow","needClipY","isNil","_ref2","strokeWidth","_ref2$r","_ref2$strokeWidth","_ref3$clipDot","isDotProps","dotSize","renderCurve","renderErrorBar","renderDots","LabelList","renderCallByParent","PureComponent","xAxisId","yAxisId","activeDot","legendType","stroke","Global","isSsr","_ref4","xAxisTicks","yAxisTicks","bandSize","displayedData","offset","getCateCoordinateOfLine","axis","ticks","scale","LineChart","generateCategoricalChart","chartName","GraphicalChild","axisComponents","axisType","AxisComp","XAxis","YAxis","formatAxisMap","Status","dispatch","useAppDispatch","curTab","setCurTab","useState","isKMSSecretKey","setIsKMSSecretKey","status","setStatus","loadingStatus","setLoadingStatus","metrics","setMetrics","loadingMetrics","setLoadingMetrics","apis","setAPIs","loadingAPIs","setLoadingAPIs","version","setVersion","loadingVersion","setLoadingVersion","displayStatus","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","KMS_STATUS","displayMetrics","KMS_METRICS","displayAPIs","KMS_APIS","displayVersion","KMS_Version","useEffect","api","kms","kmsStatus","then","catch","setErrorSnackMessage","errorToHandler","error","finally","kmsMetrics","kmsapIs","kmsVersion","statusPanel","Fragment","SectionTitle","Grid","container","xs","gridTemplateColumns","gridAutoFlow","breakPoints","sm","ValuePair","defaultKeyID","endpoints","LabelWithIcon","EnabledIcon","DisabledIcon","url","apisPanel","results","path","method","metricsPanel","BarChart","success","requestOK","failures","requestFail","errors","requestErr","active","requestActive","CartesianGrid","Tooltip","Legend","Bar","audit","auditEvents","errorEvents","latencyHistogram","h","margin","right","bottom","setHelpName","PageHeaderWrapper","actions","HelpMenu","PageLayout","Tabs","currentTabOrPath","onTabClick","newValue","options","tabConfig","content","withBorders","flexFlow","padding","disabled","defaultTooltipEventType","validateTooltipEventTypes"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/960.494cc9da.chunk.js b/web-app/build/static/js/960.494cc9da.chunk.js deleted file mode 100644 index 966380666..000000000 --- a/web-app/build/static/js/960.494cc9da.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_app=self.webpackChunkweb_app||[]).push([[960],{25903:(t,e,r)=>{r.d(e,{A:()=>i});r(65043);var n=r(89923),a=r(70579);const i=t=>{let{icon:e=null,label:r=null}=t;return(0,a.jsxs)(n.azJ,{sx:{display:"flex",alignItems:"center",gap:5,marginTop:3},children:[(0,a.jsx)(n.azJ,{sx:{height:16,width:16,display:"flex",alignItems:"center"},children:e}),(0,a.jsx)(n.azJ,{children:r})]})}},960:(t,e,r)=>{r.r(e),r.d(e,{default:()=>it});var n=r(65043),a=r(89923),i=r(82291),o=r(87734),s=r(52185),l=r(6026),c=r(86150),u=r(21327),d=r(38643),p=r(88420),h=r(59101),f=r(11629),m=r.n(f),y=r(79686),x=r.n(y),v=r(19853),b=r.n(v),g=r(58387),j=r(68471),A=r(68892),S=r(94020),w=r(81519),k=r(38813),O=r(76307),P=r(240),E=r(6015),C=r(20202),D=["type","layout","connectNulls","ref"];function T(t){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},T(t)}function F(t,e){if(null==t)return{};var r,n,a=function(t,e){if(null==t)return{};var r,n,a={},i=Object.keys(t);for(n=0;n=0||(a[r]=t[r]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}function I(){return I=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);rs){c=[].concat(_(a.slice(0,u)),[s-d]);break}var p=c.length%2===0?[0,l]:[l];return[].concat(_(e.repeat(a,o)),_(c),p).map((function(t){return"".concat(t,"px")})).join(", ")})),R(B(t),"id",(0,O.NF)("recharts-line-")),R(B(t),"pathRef",(function(e){t.mainCurve=e})),R(B(t),"handleAnimationEnd",(function(){t.setState({isAnimationFinished:!0}),t.props.onAnimationEnd&&t.props.onAnimationEnd()})),R(B(t),"handleAnimationStart",(function(){t.setState({isAnimationFinished:!1}),t.props.onAnimationStart&&t.props.onAnimationStart()})),t}var r,a,i;return function(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&V(t,e)}(e,t),r=e,i=[{key:"getDerivedStateFromProps",value:function(t,e){return t.animationId!==e.prevAnimationId?{prevAnimationId:t.animationId,curPoints:t.points,prevPoints:e.curPoints}:t.points!==e.curPoints?{curPoints:t.points}:null}},{key:"repeat",value:function(t,e){for(var r=t.length%2!==0?[].concat(_(t),[0]):t,n=[],a=0;a0||!b()(o,n))?this.renderCurveWithAnimation(t,e):this.renderCurveStatically(n,t,e)}},{key:"render",value:function(){var t,e=this.props,r=e.hide,a=e.dot,i=e.points,o=e.className,s=e.xAxis,l=e.yAxis,c=e.top,u=e.left,d=e.width,p=e.height,h=e.isAnimationActive,f=e.id;if(r||!i||!i.length)return null;var m=this.state.isAnimationFinished,y=1===i.length,v=(0,g.A)("recharts-line",o),b=s&&s.allowDataOverflow,j=l&&l.allowDataOverflow,A=b||j,k=x()(f)?this.id:f,O=null!==(t=(0,P.J9)(a,!1))&&void 0!==t?t:{r:3,strokeWidth:2},E=O.r,C=void 0===E?3:E,D=O.strokeWidth,T=void 0===D?2:D,F=((0,P.ON)(a)?a:{}).clipDot,I=void 0===F||F,K=2*C+T;return n.createElement(S.W,{className:v},b||j?n.createElement("defs",null,n.createElement("clipPath",{id:"clipPath-".concat(k)},n.createElement("rect",{x:b?u:u-d/2,y:j?c:c-p/2,width:b?d:2*d,height:j?p:2*p})),!I&&n.createElement("clipPath",{id:"clipPath-dots-".concat(k)},n.createElement("rect",{x:u-K/2,y:c-K/2,width:d+K,height:p+K}))):null,!y&&this.renderCurve(A,k),this.renderErrorBar(A,k),(y||a)&&this.renderDots(A,I,k),(!h||m)&&w.Z.renderCallByParent(this.props,i))}}])&&W(r.prototype,a),i&&W(r,i),Object.defineProperty(r,"prototype",{writable:!1}),e}(n.PureComponent);R(Z,"displayName","Line"),R(Z,"defaultProps",{xAxisId:0,yAxisId:0,connectNulls:!1,activeDot:!0,dot:!0,legendType:"line",stroke:"#3182bd",strokeWidth:1,fill:"#fff",points:[],isAnimationActive:!E.m.isSsr,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",hide:!1,label:!1}),R(Z,"getComposedData",(function(t){var e=t.props,r=t.xAxis,n=t.yAxis,a=t.xAxisTicks,i=t.yAxisTicks,o=t.dataKey,s=t.bandSize,l=t.displayedData,c=t.offset,u=e.layout;return M({points:l.map((function(t,e){var l=(0,C.kr)(t,o);return"horizontal"===u?{x:(0,C.nb)({axis:r,ticks:a,bandSize:s,entry:t,index:e}),y:x()(l)?null:n.scale(l),value:l,payload:t}:{x:x()(l)?null:r.scale(l),y:(0,C.nb)({axis:n,ticks:i,bandSize:s,entry:t,index:e}),value:l,payload:t}})),layout:u},c)}));var U=r(3831),H=(0,p.gu)({chartName:"LineChart",GraphicalChild:Z,axisComponents:[{axisType:"xAxis",AxisComp:s.W},{axisType:"yAxis",AxisComp:l.h}],formatAxisMap:U.pr}),G=r(77938),$=r(99161),Q=r(64159),X=r(20554),Y=r(25903),tt=r(48793),et=r(55968),rt=r(56629),nt=r(53518),at=r(70579);const it=()=>{var t;const e=(0,X.jL)(),[r,p]=(0,n.useState)("simple-tab-0"),[h,f]=(0,n.useState)(!0),[m,y]=(0,n.useState)(null),[x,v]=(0,n.useState)(!0),[b,g]=(0,n.useState)(null),[j,A]=(0,n.useState)(!0),[S,w]=(0,n.useState)(null),[k,O]=(0,n.useState)(!0),[P,E]=(0,n.useState)(null),[C,D]=(0,n.useState)(!0),T=(0,G._)($.Ms,[$.OV.KMS_STATUS]),F=(0,G._)($.Ms,[$.OV.KMS_METRICS])&&!h,I=(0,G._)($.Ms,[$.OV.KMS_APIS])&&!h,K=(0,G._)($.Ms,[$.OV.KMS_Version])&&!h;(0,n.useEffect)((()=>{T&&x&&rt.F.kms.kmsStatus().then((t=>{t.data&&(y(t.data),f("SecretKey"===t.data.name))})).catch((t=>{e((0,Q.C9)((0,nt.S)(t.error)))})).finally((()=>v(!1))),F&&j&&rt.F.kms.kmsMetrics().then((t=>{t.data&&g(t.data)})).catch((t=>{e((0,Q.C9)((0,nt.S)(t.error)))})).finally((()=>A(!1))),I&&k&&rt.F.kms.kmsapIs().then((t=>{t.data&&w(t.data)})).catch((t=>{e((0,Q.C9)((0,nt.S)(t.error)))})).finally((()=>O(!1))),K&&C&&rt.F.kms.kmsVersion().then((t=>{t.data&&E(t.data)})).catch((t=>{e((0,Q.C9)((0,nt.S)(t.error)))})).finally((()=>D(!1)))}),[e,T,x,F,j,I,k,K,C]);const M=(0,at.jsxs)(n.Fragment,{children:[(0,at.jsx)(a._xt,{children:"Status"}),(0,at.jsx)("br",{}),m&&(0,at.jsx)(a.xA9,{container:!0,children:(0,at.jsx)(a.xA9,{item:!0,xs:12,children:(0,at.jsx)(a.azJ,{sx:{display:"grid",gap:2,gridTemplateColumns:"2fr 1fr",gridAutoFlow:"row",["@media (max-width: ".concat(a.nmC.sm,"px)")]:{gridTemplateColumns:"1fr",gridAutoFlow:"dense"}},children:(0,at.jsxs)(a.azJ,{sx:{display:"grid",gap:2,gridTemplateColumns:"2fr 1fr",gridAutoFlow:"row",["@media (max-width: ".concat(a.nmC.sm,"px)")]:{gridTemplateColumns:"1fr",gridAutoFlow:"dense"}},children:[(0,at.jsx)(a.mZW,{label:"Name:",value:m.name}),P&&(0,at.jsx)(a.mZW,{label:"Version:",value:P.version}),(0,at.jsx)(a.mZW,{label:"Default Key ID:",value:m.defaultKeyID}),(0,at.jsx)(a.mZW,{label:"Key Management Service Endpoints:",value:(0,at.jsx)(n.Fragment,{children:null===(t=m.endpoints)||void 0===t?void 0:t.map(((t,e)=>(0,at.jsx)(Y.A,{icon:"online"===t.status?(0,at.jsx)(a.xhy,{}):(0,at.jsx)(a.aaC,{}),label:t.url},e)))})})]})})})})]}),_=(0,at.jsxs)(n.Fragment,{children:[(0,at.jsx)(a._xt,{children:"Supported API endpoints"}),(0,at.jsx)("br",{}),S&&(0,at.jsx)(a.xA9,{container:!0,children:(0,at.jsx)(a.xA9,{item:!0,xs:12,children:(0,at.jsx)(a.mZW,{label:"",value:(0,at.jsx)(a.azJ,{sx:{display:"grid",gap:2,gridTemplateColumns:"2fr 1fr",gridAutoFlow:"row",["@media (max-width: ".concat(a.nmC.sm,"px)")]:{gridTemplateColumns:"1fr",gridAutoFlow:"dense"}},children:S.results.map(((t,e)=>(0,at.jsx)(Y.A,{icon:(0,at.jsx)(a.xhy,{}),label:"".concat(t.path," - ").concat(t.method)},e)))})})})})]}),N=(0,at.jsx)(n.Fragment,{children:b&&(0,at.jsxs)(n.Fragment,{children:[(0,at.jsx)("h3",{children:"API Requests"}),(0,at.jsxs)(i.E,{width:730,height:250,data:[{label:"Success",success:b.requestOK},{label:"Failures",failures:b.requestFail},{label:"Errors",errors:b.requestErr},{label:"Active",active:b.requestActive}],children:[(0,at.jsx)(o.d,{strokeDasharray:"3 3"}),(0,at.jsx)(s.W,{dataKey:"label"}),(0,at.jsx)(l.h,{}),(0,at.jsx)(c.m,{}),(0,at.jsx)(u.s,{}),(0,at.jsx)(d.y,{dataKey:"success",fill:"green"}),(0,at.jsx)(d.y,{dataKey:"failures",fill:"red"}),(0,at.jsx)(d.y,{dataKey:"errors",fill:"black"}),(0,at.jsx)(d.y,{dataKey:"active",fill:"#8884d8"})]}),(0,at.jsx)("h3",{children:"Events"}),(0,at.jsxs)(i.E,{width:730,height:250,data:[{label:"Audit",audit:b.auditEvents},{label:"Errors",errors:b.errorEvents}],children:[(0,at.jsx)(o.d,{strokeDasharray:"3 3"}),(0,at.jsx)(s.W,{dataKey:"label"}),(0,at.jsx)(l.h,{}),(0,at.jsx)(c.m,{}),(0,at.jsx)(u.s,{}),(0,at.jsx)(d.y,{dataKey:"audit",fill:"green"}),(0,at.jsx)(d.y,{dataKey:"errors",fill:"black"})]}),(0,at.jsx)("h3",{children:"Latency Histogram"}),b.latencyHistogram&&(0,at.jsxs)(H,{width:730,height:250,data:b.latencyHistogram.map((t=>({...t,duration:"".concat(t.duration/1e6,"ms")}))),margin:{top:5,right:30,left:20,bottom:5},children:[(0,at.jsx)(o.d,{strokeDasharray:"3 3"}),(0,at.jsx)(s.W,{dataKey:"duration"}),(0,at.jsx)(l.h,{}),(0,at.jsx)(c.m,{}),(0,at.jsx)(u.s,{}),(0,at.jsx)(Z,{type:"monotone",dataKey:"total",stroke:"#8884d8",name:"Requests that took T ms or less"})]})]})});return(0,n.useEffect)((()=>{e((0,Q.ph)("kms_status"))}),[]),(0,at.jsxs)(n.Fragment,{children:[(0,at.jsx)(tt.A,{label:"Key Management Service",actions:(0,at.jsx)(et.A,{})}),(0,at.jsx)(a.Mxu,{children:(0,at.jsx)(a.tUM,{currentTabOrPath:r,onTabClick:t=>p(t),options:[{tabConfig:{label:"Status",id:"simple-tab-0"},content:(0,at.jsx)(a.azJ,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:M})},{tabConfig:{label:"APIs",id:"simple-tab-1",disabled:!I},content:(0,at.jsx)(a.azJ,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:_})},{tabConfig:{label:"Metrics",id:"simple-tab-2",disabled:!F},content:(0,at.jsx)(a.azJ,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:N})}]})})]})}},82291:(t,e,r)=>{r.d(e,{E:()=>l});var n=r(88420),a=r(38643),i=r(52185),o=r(6026),s=r(3831),l=(0,n.gu)({chartName:"BarChart",GraphicalChild:a.y,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:i.W},{axisType:"yAxis",AxisComp:o.h}],formatAxisMap:s.pr})}}]); -//# sourceMappingURL=960.494cc9da.chunk.js.map \ No newline at end of file diff --git a/web-app/build/static/js/960.494cc9da.chunk.js.map b/web-app/build/static/js/960.494cc9da.chunk.js.map deleted file mode 100644 index 5bd060446..000000000 --- a/web-app/build/static/js/960.494cc9da.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/960.494cc9da.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/LabelWithIcon.tsx","../node_modules/recharts/es6/cartesian/Line.js","../node_modules/recharts/es6/chart/LineChart.js","screens/Console/KMS/Status.tsx","../node_modules/recharts/es6/chart/BarChart.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"mds\";\n\ntype LabelWithIconProps = {\n icon: React.ReactNode | null;\n label: React.ReactNode | null;\n};\n\nconst LabelWithIcon = ({ icon = null, label = null }: LabelWithIconProps) => {\n return (\n \n \n {icon}\n \n {label}\n \n );\n};\n\nexport default LabelWithIcon;\n","var _excluded = [\"type\", \"layout\", \"connectNulls\", \"ref\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Line\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport isFunction from 'lodash/isFunction';\nimport isNil from 'lodash/isNil';\nimport isEqual from 'lodash/isEqual';\nimport clsx from 'clsx';\nimport { Curve } from '../shape/Curve';\nimport { Dot } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { ErrorBar } from './ErrorBar';\nimport { uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType, filterProps, isDotProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nexport var Line = /*#__PURE__*/function (_PureComponent) {\n _inherits(Line, _PureComponent);\n function Line() {\n var _this;\n _classCallCheck(this, Line);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Line, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: true,\n totalLength: 0\n });\n _defineProperty(_assertThisInitialized(_this), \"generateSimpleStrokeDasharray\", function (totalLength, length) {\n return \"\".concat(length, \"px \").concat(totalLength - length, \"px\");\n });\n _defineProperty(_assertThisInitialized(_this), \"getStrokeDasharray\", function (length, totalLength, lines) {\n var lineLength = lines.reduce(function (pre, next) {\n return pre + next;\n });\n\n // if lineLength is 0 return the default when no strokeDasharray is provided\n if (!lineLength) {\n return _this.generateSimpleStrokeDasharray(totalLength, length);\n }\n var count = Math.floor(length / lineLength);\n var remainLength = length % lineLength;\n var restLength = totalLength - length;\n var remainLines = [];\n for (var i = 0, sum = 0; i < lines.length; sum += lines[i], ++i) {\n if (sum + lines[i] > remainLength) {\n remainLines = [].concat(_toConsumableArray(lines.slice(0, i)), [remainLength - sum]);\n break;\n }\n }\n var emptyLines = remainLines.length % 2 === 0 ? [0, restLength] : [restLength];\n return [].concat(_toConsumableArray(Line.repeat(lines, count)), _toConsumableArray(remainLines), emptyLines).map(function (line) {\n return \"\".concat(line, \"px\");\n }).join(', ');\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", uniqueId('recharts-line-'));\n _defineProperty(_assertThisInitialized(_this), \"pathRef\", function (node) {\n _this.mainCurve = node;\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function () {\n _this.setState({\n isAnimationFinished: true\n });\n if (_this.props.onAnimationEnd) {\n _this.props.onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function () {\n _this.setState({\n isAnimationFinished: false\n });\n if (_this.props.onAnimationStart) {\n _this.props.onAnimationStart();\n }\n });\n return _this;\n }\n _createClass(Line, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!this.props.isAnimationActive) {\n return;\n }\n var totalLength = this.getTotalLength();\n this.setState({\n totalLength: totalLength\n });\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (!this.props.isAnimationActive) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength !== this.state.totalLength) {\n this.setState({\n totalLength: totalLength\n });\n }\n }\n }, {\n key: \"getTotalLength\",\n value: function getTotalLength() {\n var curveDom = this.mainCurve;\n try {\n return curveDom && curveDom.getTotalLength && curveDom.getTotalLength() || 0;\n } catch (err) {\n return 0;\n }\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar(needClip, clipPathId) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props = this.props,\n points = _this$props.points,\n xAxis = _this$props.xAxis,\n yAxis = _this$props.yAxis,\n layout = _this$props.layout,\n children = _this$props.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: getValueByDataKey(dataPoint.payload, dataKey)\n };\n };\n var errorBarProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, errorBarProps, errorBarItems.map(function (item) {\n return /*#__PURE__*/React.cloneElement(item, {\n key: \"bar-\".concat(item.props.dataKey),\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n dataPointFormatter: dataPointFormatter\n });\n }));\n }\n }, {\n key: \"renderDots\",\n value: function renderDots(needClip, clipDot, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props2 = this.props,\n dot = _this$props2.dot,\n points = _this$props2.points,\n dataKey = _this$props2.dataKey;\n var lineProps = filterProps(this.props, false);\n var customDotProps = filterProps(dot, true);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread(_objectSpread(_objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, lineProps), customDotProps), {}, {\n value: entry.value,\n dataKey: dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n payload: entry.payload\n });\n return Line.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipDot ? '' : 'dots-').concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-line-dots\",\n key: \"dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderCurveStatically\",\n value: function renderCurveStatically(points, needClip, clipPathId, props) {\n var _this$props3 = this.props,\n type = _this$props3.type,\n layout = _this$props3.layout,\n connectNulls = _this$props3.connectNulls,\n ref = _this$props3.ref,\n others = _objectWithoutProperties(_this$props3, _excluded);\n var curveProps = _objectSpread(_objectSpread(_objectSpread({}, filterProps(others, true)), {}, {\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null,\n points: points\n }, props), {}, {\n type: type,\n layout: layout,\n connectNulls: connectNulls\n });\n return /*#__PURE__*/React.createElement(Curve, _extends({}, curveProps, {\n pathRef: this.pathRef\n }));\n }\n }, {\n key: \"renderCurveWithAnimation\",\n value: function renderCurveWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n var _this$props4 = this.props,\n points = _this$props4.points,\n strokeDasharray = _this$props4.strokeDasharray,\n isAnimationActive = _this$props4.isAnimationActive,\n animationBegin = _this$props4.animationBegin,\n animationDuration = _this$props4.animationDuration,\n animationEasing = _this$props4.animationEasing,\n animationId = _this$props4.animationId,\n animateNewValues = _this$props4.animateNewValues,\n width = _this$props4.width,\n height = _this$props4.height;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n totalLength = _this$state.totalLength;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"line-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n var stepData = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n\n // magic number of faking previous x and y location\n if (animateNewValues) {\n var _interpolatorX = interpolateNumber(width * 2, entry.x);\n var _interpolatorY = interpolateNumber(height / 2, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: _interpolatorX(t),\n y: _interpolatorY(t)\n });\n }\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: entry.x,\n y: entry.y\n });\n });\n return _this2.renderCurveStatically(stepData, needClip, clipPathId);\n }\n var interpolator = interpolateNumber(0, totalLength);\n var curLength = interpolator(t);\n var currentStrokeDasharray;\n if (strokeDasharray) {\n var lines = \"\".concat(strokeDasharray).split(/[,\\s]+/gim).map(function (num) {\n return parseFloat(num);\n });\n currentStrokeDasharray = _this2.getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = _this2.generateSimpleStrokeDasharray(totalLength, curLength);\n }\n return _this2.renderCurveStatically(points, needClip, clipPathId, {\n strokeDasharray: currentStrokeDasharray\n });\n });\n }\n }, {\n key: \"renderCurve\",\n value: function renderCurve(needClip, clipPathId) {\n var _this$props5 = this.props,\n points = _this$props5.points,\n isAnimationActive = _this$props5.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n totalLength = _this$state2.totalLength;\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !isEqual(prevPoints, points))) {\n return this.renderCurveWithAnimation(needClip, clipPathId);\n }\n return this.renderCurveStatically(points, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _filterProps;\n var _this$props6 = this.props,\n hide = _this$props6.hide,\n dot = _this$props6.dot,\n points = _this$props6.points,\n className = _this$props6.className,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n top = _this$props6.top,\n left = _this$props6.left,\n width = _this$props6.width,\n height = _this$props6.height,\n isAnimationActive = _this$props6.isAnimationActive,\n id = _this$props6.id;\n if (hide || !points || !points.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = clsx('recharts-line', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = isNil(id) ? this.id : id;\n var _ref2 = (_filterProps = filterProps(dot, false)) !== null && _filterProps !== void 0 ? _filterProps : {\n r: 3,\n strokeWidth: 2\n },\n _ref2$r = _ref2.r,\n r = _ref2$r === void 0 ? 3 : _ref2$r,\n _ref2$strokeWidth = _ref2.strokeWidth,\n strokeWidth = _ref2$strokeWidth === void 0 ? 2 : _ref2$strokeWidth;\n var _ref3 = isDotProps(dot) ? dot : {},\n _ref3$clipDot = _ref3.clipDot,\n clipDot = _ref3$clipDot === void 0 ? true : _ref3$clipDot;\n var dotSize = r * 2 + strokeWidth;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n })), !clipDot && /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-dots-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left - dotSize / 2,\n y: top - dotSize / 2,\n width: width + dotSize,\n height: height + dotSize\n }))) : null, !hasSinglePoint && this.renderCurve(needClip, clipPathId), this.renderErrorBar(needClip, clipPathId), (hasSinglePoint || dot) && this.renderDots(needClip, clipDot, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n prevPoints: prevState.curPoints\n };\n }\n if (nextProps.points !== prevState.curPoints) {\n return {\n curPoints: nextProps.points\n };\n }\n return null;\n }\n }, {\n key: \"repeat\",\n value: function repeat(lines, count) {\n var linesUnit = lines.length % 2 !== 0 ? [].concat(_toConsumableArray(lines), [0]) : lines;\n var result = [];\n for (var i = 0; i < count; ++i) {\n result = [].concat(_toConsumableArray(result), _toConsumableArray(linesUnit));\n }\n return result;\n }\n }, {\n key: \"renderDotItem\",\n value: function renderDotItem(option, props) {\n var dotItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dotItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dotItem = option(props);\n } else {\n var className = clsx('recharts-line-dot', typeof option !== 'boolean' ? option.className : '');\n dotItem = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n className: className\n }));\n }\n return dotItem;\n }\n }]);\n return Line;\n}(PureComponent);\n_defineProperty(Line, \"displayName\", 'Line');\n_defineProperty(Line, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n connectNulls: false,\n activeDot: true,\n dot: true,\n legendType: 'line',\n stroke: '#3182bd',\n strokeWidth: 1,\n fill: '#fff',\n points: [],\n isAnimationActive: !Global.isSsr,\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n hide: false,\n label: false\n});\n/**\n * Compose the data of each group\n * @param {Object} props The props from the component\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {String} dataKey The unique key of a group\n * @return {Array} Composed data\n */\n_defineProperty(Line, \"getComposedData\", function (_ref4) {\n var props = _ref4.props,\n xAxis = _ref4.xAxis,\n yAxis = _ref4.yAxis,\n xAxisTicks = _ref4.xAxisTicks,\n yAxisTicks = _ref4.yAxisTicks,\n dataKey = _ref4.dataKey,\n bandSize = _ref4.bandSize,\n displayedData = _ref4.displayedData,\n offset = _ref4.offset;\n var layout = props.layout;\n var points = displayedData.map(function (entry, index) {\n var value = getValueByDataKey(entry, dataKey);\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: isNil(value) ? null : yAxis.scale(value),\n value: value,\n payload: entry\n };\n }\n return {\n x: isNil(value) ? null : xAxis.scale(value),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n return _objectSpread({\n points: points,\n layout: layout\n }, offset);\n});","/**\n * @fileOverview Line Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Line } from '../cartesian/Line';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var LineChart = generateCategoricalChart({\n chartName: 'LineChart',\n GraphicalChild: Line,\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Box,\n breakPoints,\n DisabledIcon,\n EnabledIcon,\n Grid,\n PageLayout,\n SectionTitle,\n Tabs,\n ValuePair,\n} from \"mds\";\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport LabelWithIcon from \"../Buckets/BucketDetails/SummaryItems/LabelWithIcon\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { api } from \"api\";\nimport { KmsStatusResponse } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\nconst Status = () => {\n const dispatch = useAppDispatch();\n const [curTab, setCurTab] = useState(\"simple-tab-0\");\n\n const [isKMSSecretKey, setIsKMSSecretKey] = useState(true);\n const [status, setStatus] = useState(null);\n const [loadingStatus, setLoadingStatus] = useState(true);\n const [metrics, setMetrics] = useState(null);\n const [loadingMetrics, setLoadingMetrics] = useState(true);\n const [apis, setAPIs] = useState(null);\n const [loadingAPIs, setLoadingAPIs] = useState(true);\n const [version, setVersion] = useState(null);\n const [loadingVersion, setLoadingVersion] = useState(true);\n\n const displayStatus = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.KMS_STATUS,\n ]);\n const displayMetrics =\n hasPermission(CONSOLE_UI_RESOURCE, [IAM_SCOPES.KMS_METRICS]) &&\n !isKMSSecretKey;\n const displayAPIs =\n hasPermission(CONSOLE_UI_RESOURCE, [IAM_SCOPES.KMS_APIS]) &&\n !isKMSSecretKey;\n const displayVersion =\n hasPermission(CONSOLE_UI_RESOURCE, [IAM_SCOPES.KMS_Version]) &&\n !isKMSSecretKey;\n\n useEffect(() => {\n const loadStatus = () => {\n api.kms\n .kmsStatus()\n .then((result) => {\n if (result.data) {\n setStatus(result.data);\n setIsKMSSecretKey(result.data.name === \"SecretKey\");\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n })\n .finally(() => setLoadingStatus(false));\n };\n\n const loadMetrics = () => {\n api.kms\n .kmsMetrics()\n .then((result) => {\n if (result.data) {\n setMetrics(result.data);\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n })\n .finally(() => setLoadingMetrics(false));\n };\n\n const loadAPIs = () => {\n api.kms\n .kmsapIs()\n .then((result: any) => {\n if (result.data) {\n setAPIs(result.data);\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n })\n .finally(() => setLoadingAPIs(false));\n };\n\n const loadVersion = () => {\n api.kms\n .kmsVersion()\n .then((result: any) => {\n if (result.data) {\n setVersion(result.data);\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n })\n .finally(() => setLoadingVersion(false));\n };\n\n if (displayStatus && loadingStatus) {\n loadStatus();\n }\n if (displayMetrics && loadingMetrics) {\n loadMetrics();\n }\n if (displayAPIs && loadingAPIs) {\n loadAPIs();\n }\n if (displayVersion && loadingVersion) {\n loadVersion();\n }\n }, [\n dispatch,\n displayStatus,\n loadingStatus,\n displayMetrics,\n loadingMetrics,\n displayAPIs,\n loadingAPIs,\n displayVersion,\n loadingVersion,\n ]);\n\n const statusPanel = (\n \n Status\n
\n {status && (\n \n \n \n \n \n {version && (\n \n )}\n \n \n {status.endpoints?.map((e: any, i: number) => (\n \n ) : (\n \n )\n }\n label={e.url}\n />\n ))}\n
\n }\n />\n \n \n \n \n )}\n \n );\n\n const apisPanel = (\n \n Supported API endpoints\n
\n {apis && (\n \n \n \n {apis.results.map((e: any, i: number) => (\n }\n label={`${e.path} - ${e.method}`}\n />\n ))}\n \n }\n />\n \n \n )}\n
\n );\n\n const getAPIRequestsData = () => {\n return [\n { label: \"Success\", success: metrics.requestOK },\n { label: \"Failures\", failures: metrics.requestFail },\n { label: \"Errors\", errors: metrics.requestErr },\n { label: \"Active\", active: metrics.requestActive },\n ];\n };\n\n const getEventsData = () => {\n return [\n { label: \"Audit\", audit: metrics.auditEvents },\n { label: \"Errors\", errors: metrics.errorEvents },\n ];\n };\n\n const getHistogramData = () => {\n return metrics.latencyHistogram.map((h: any) => {\n return {\n ...h,\n duration: `${h.duration / 1000000}ms`,\n };\n });\n };\n\n const metricsPanel = (\n \n {metrics && (\n \n

API Requests

\n \n \n \n \n \n \n \n \n \n \n \n\n

Events

\n \n \n \n \n \n \n \n \n \n

Latency Histogram

\n {metrics.latencyHistogram && (\n \n \n \n \n \n \n \n \n )}\n
\n )}\n
\n );\n\n useEffect(() => {\n dispatch(setHelpName(\"kms_status\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n }\n />\n\n \n setCurTab(newValue)}\n options={[\n {\n tabConfig: { label: \"Status\", id: \"simple-tab-0\" },\n content: (\n \n {statusPanel}\n \n ),\n },\n {\n tabConfig: {\n label: \"APIs\",\n id: \"simple-tab-1\",\n disabled: !displayAPIs,\n },\n content: (\n \n {apisPanel}\n \n ),\n },\n {\n tabConfig: {\n label: \"Metrics\",\n id: \"simple-tab-2\",\n disabled: !displayMetrics,\n },\n content: (\n \n {metricsPanel}\n \n ),\n },\n ]}\n />\n \n \n );\n};\n\nexport default Status;\n","/**\n * @fileOverview Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Bar } from '../cartesian/Bar';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var BarChart = generateCategoricalChart({\n chartName: 'BarChart',\n GraphicalChild: Bar,\n defaultTooltipEventType: 'axis',\n validateTooltipEventTypes: ['axis', 'item'],\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});"],"names":["_ref","icon","label","_jsxs","Box","sx","display","alignItems","gap","marginTop","children","_jsx","height","width","_excluded","_typeof","o","Symbol","iterator","constructor","prototype","_objectWithoutProperties","source","excluded","key","i","target","sourceKeys","Object","keys","length","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","call","_extends","assign","bind","arguments","hasOwnProperty","apply","this","ownKeys","e","r","t","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toConsumableArray","arr","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","minLen","n","toString","slice","name","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","arr2","_defineProperties","props","descriptor","configurable","writable","_toPropertyKey","_callSuper","_getPrototypeOf","self","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","Boolean","valueOf","setPrototypeOf","getPrototypeOf","__proto__","ReferenceError","_setPrototypeOf","p","obj","value","toPrimitive","String","Number","_toPrimitive","Line","_PureComponent","_this","instance","Constructor","_classCallCheck","_len","args","_key","concat","isAnimationFinished","totalLength","lines","lineLength","reduce","pre","next","generateSimpleStrokeDasharray","count","Math","floor","remainLength","restLength","remainLines","sum","emptyLines","repeat","map","line","join","uniqueId","node","mainCurve","setState","onAnimationEnd","onAnimationStart","protoProps","staticProps","subClass","superClass","create","_inherits","nextProps","prevState","animationId","prevAnimationId","curPoints","points","prevPoints","linesUnit","result","option","dotItem","React","isFunction","className","clsx","Dot","isAnimationActive","getTotalLength","state","curveDom","err","needClip","clipPathId","_this$props","xAxis","yAxis","layout","errorBarItems","findAllByType","ErrorBar","dataPointFormatter","dataPoint","dataKey","x","y","errorVal","getValueByDataKey","payload","errorBarProps","clipPath","Layer","item","data","clipDot","_this$props2","dot","lineProps","filterProps","customDotProps","dots","entry","dotProps","cx","cy","index","renderDotItem","dotsProps","_this$props3","type","connectNulls","others","ref","curveProps","fill","Curve","pathRef","_this2","_this$props4","strokeDasharray","animationBegin","animationDuration","animationEasing","animateNewValues","_this$state","Animate","begin","duration","isActive","easing","to","handleAnimationEnd","handleAnimationStart","prevPointsDiffFactor","stepData","prevPointIndex","prev","interpolatorX","interpolateNumber","interpolatorY","_interpolatorX","_interpolatorY","renderCurveStatically","currentStrokeDasharray","curLength","interpolator","split","num","parseFloat","getStrokeDasharray","_this$props5","_this$state2","isEqual","renderCurveWithAnimation","_filterProps","_this$props6","hide","top","left","id","hasSinglePoint","layerClass","needClipX","allowDataOverflow","needClipY","isNil","_ref2","strokeWidth","_ref2$r","_ref2$strokeWidth","_ref3$clipDot","isDotProps","dotSize","renderCurve","renderErrorBar","renderDots","LabelList","renderCallByParent","PureComponent","xAxisId","yAxisId","activeDot","legendType","stroke","Global","isSsr","_ref4","xAxisTicks","yAxisTicks","bandSize","displayedData","offset","getCateCoordinateOfLine","axis","ticks","scale","LineChart","generateCategoricalChart","chartName","GraphicalChild","axisComponents","axisType","AxisComp","XAxis","YAxis","formatAxisMap","Status","_status$endpoints","dispatch","useAppDispatch","curTab","setCurTab","useState","isKMSSecretKey","setIsKMSSecretKey","status","setStatus","loadingStatus","setLoadingStatus","metrics","setMetrics","loadingMetrics","setLoadingMetrics","apis","setAPIs","loadingAPIs","setLoadingAPIs","version","setVersion","loadingVersion","setLoadingVersion","displayStatus","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","KMS_STATUS","displayMetrics","KMS_METRICS","displayAPIs","KMS_APIS","displayVersion","KMS_Version","useEffect","api","kms","kmsStatus","then","catch","setErrorSnackMessage","errorToHandler","error","finally","kmsMetrics","kmsapIs","kmsVersion","statusPanel","Fragment","SectionTitle","Grid","container","xs","gridTemplateColumns","gridAutoFlow","breakPoints","sm","ValuePair","defaultKeyID","endpoints","LabelWithIcon","EnabledIcon","DisabledIcon","url","apisPanel","results","path","method","metricsPanel","BarChart","success","requestOK","failures","requestFail","errors","requestErr","active","requestActive","CartesianGrid","Tooltip","Legend","Bar","audit","auditEvents","errorEvents","latencyHistogram","h","margin","right","bottom","setHelpName","PageHeaderWrapper","actions","HelpMenu","PageLayout","Tabs","currentTabOrPath","onTabClick","newValue","options","tabConfig","content","withBorders","flexFlow","padding","disabled","defaultTooltipEventType","validateTooltipEventTypes"],"sourceRoot":""} \ No newline at end of file diff --git a/web-app/build/static/js/9652.3c40b533.chunk.js.map b/web-app/build/static/js/9652.3c40b533.chunk.js.map index 8809646bc..c0320a0ba 100644 --- a/web-app/build/static/js/9652.3c40b533.chunk.js.map +++ b/web-app/build/static/js/9652.3c40b533.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/9652.3c40b533.chunk.js","mappings":";iGAIAA,EAAQ,EAAU,SAAUC,EAAMC,GAChC,GAAID,GAAQC,EAAe,CACzB,IAAIC,EAAqBC,MAAMC,QAAQH,GAAiBA,EAAgBA,EAAcI,MAAM,KACxFC,EAAWN,EAAKO,MAAQ,GACxBC,GAAYR,EAAKS,MAAQ,IAAIC,cAC7BC,EAAeH,EAASI,QAAQ,QAAS,IAC7C,OAAOV,EAAmBW,MAAK,SAAUJ,GACvC,IAAIK,EAAYL,EAAKM,OAAOL,cAE5B,MAA4B,MAAxBI,EAAUE,OAAO,GACZV,EAASI,cAAcO,SAASH,GAC9BA,EAAUG,SAAS,MAErBN,IAAiBG,EAAUF,QAAQ,QAAS,IAG9CJ,IAAaM,CACtB,GACF,CAEA,OAAO,CACT,gCCvBA,IAAII,EAAkBC,EAAQ,OAE1BC,EAA4B,CAC9B,aAAc,OACd,YAAa,MACb,QAAW,QA2GbC,EAAOtB,QAjGP,SAAcuB,EAAMC,GAClB,IAAIC,EACFC,EACAC,EACAC,EACAC,EACAC,EACAC,GAAU,EACPP,IACHA,EAAU,CAAC,GAEbC,EAAQD,EAAQC,QAAS,EACzB,IAkDE,GAjDAE,EAAmBR,IAEnBS,EAAQI,SAASC,cACjBJ,EAAYG,SAASE,gBAErBJ,EAAOE,SAASG,cAAc,SACzBC,YAAcb,EAEnBO,EAAKO,WAAa,OAElBP,EAAKQ,MAAMC,IAAM,QAEjBT,EAAKQ,MAAME,SAAW,QACtBV,EAAKQ,MAAMG,IAAM,EACjBX,EAAKQ,MAAMI,KAAO,mBAElBZ,EAAKQ,MAAMK,WAAa,MAExBb,EAAKQ,MAAMM,iBAAmB,OAC9Bd,EAAKQ,MAAMO,cAAgB,OAC3Bf,EAAKQ,MAAMQ,aAAe,OAC1BhB,EAAKQ,MAAMS,WAAa,OACxBjB,EAAKkB,iBAAiB,QAAQ,SAASC,GAErC,GADAA,EAAEC,kBACE1B,EAAQ2B,OAEV,GADAF,EAAEG,iBAC6B,qBAApBH,EAAEI,cAA+B,CAC1C5B,GAAS6B,QAAQC,KAAK,iCACtB9B,GAAS6B,QAAQC,KAAK,4BACtBC,OAAOH,cAAcI,YACrB,IAAIN,EAAS9B,EAA0BG,EAAQ2B,SAAW9B,EAAmC,QAC7FmC,OAAOH,cAAcK,QAAQP,EAAQ5B,EACvC,MACE0B,EAAEI,cAAcI,YAChBR,EAAEI,cAAcK,QAAQlC,EAAQ2B,OAAQ5B,GAGxCC,EAAQmC,SACVV,EAAEG,iBACF5B,EAAQmC,OAAOV,EAAEI,eAErB,IAEArB,SAAS4B,KAAKC,YAAY/B,GAE1BF,EAAMkC,mBAAmBhC,GACzBD,EAAUkC,SAASnC,IAEFI,SAASgC,YAAY,QAEpC,MAAM,IAAIC,MAAM,iCAElBlC,GAAU,CACZ,CAAE,MAAOmC,GACPzC,GAAS6B,QAAQa,MAAM,qCAAsCD,GAC7DzC,GAAS6B,QAAQC,KAAK,4BACtB,IACEC,OAAOH,cAAcK,QAAQlC,EAAQ2B,QAAU,OAAQ5B,GACvDC,EAAQmC,QAAUnC,EAAQmC,OAAOH,OAAOH,eACxCtB,GAAU,CACZ,CAAE,MAAOmC,GACPzC,GAAS6B,QAAQa,MAAM,uCAAwCD,GAC/DzC,GAAS6B,QAAQa,MAAM,0BACvBzC,EAjFN,SAAgBA,GACd,IAAI0C,GAAW,YAAYC,KAAKC,UAAUC,WAAa,SAAM,QAAU,KACvE,OAAO7C,EAAQb,QAAQ,gBAAiBuD,EAC1C,CA8EgBjB,CAAO,YAAa3B,EAAUA,EAAQE,QAnFjC,oCAoFf8B,OAAOgB,OAAO9C,EAASH,EACzB,CACF,CAAE,QACIM,IACkC,mBAAzBA,EAAU4C,YACnB5C,EAAU4C,YAAY7C,GAEtBC,EAAU6C,mBAIV5C,GACFE,SAAS4B,KAAKe,YAAY7C,GAE5BH,GACF,CAEA,OAAOI,CACT,idChHA6C,KAAAC,QAAAD,KASCE,WATDD,QASC,IACD,42BC4WA,SAAgBE,EAAMC,GACfD,GACHE,EAAYD,EAFW,6CA4B3B,SAAgCE,GAAqC,IAAhCC,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAU,KAAM5D,EAAA4D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAU,KAC7D,IAAKF,EACH,OAAO,KAET,IACE,GAAI1D,GAA0B,kBAAR0D,EAAkB,CAEtC,GAAI1D,EAAQ+D,oBAAsBL,EAAIM,WAAW,QAAS,CACxD,MAAMC,EAAOP,EAAIQ,MAAM,QAGnB,OAAAD,QAAA,IAAAA,OAAA,EAAAA,EAAMJ,SAAU,IAClBH,EAAA,UAAAS,OAAgBT,GALsC,CAW1D,GAAI1D,EAAQoE,mBACV,IACEV,EAAMW,EAAmBX,EADvB,CAEF,MAAO,CAhB2B,CAoBxC,MAAMY,EAAcX,EAAU,IAAIY,IAAIb,EAAKC,GAAW,IAAIY,IAAIb,GAC9D,GA/CJ,SAA0BA,GACxB,OAAQ,OAAAA,QAAA,IAAAA,OAAA,EAAAA,EAAKc,UACX,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,OACH,OAAO,EACT,QACE,OAAO,EATkB,CA+CvBC,CAAiBH,GACnB,OAAOA,CAvBP,CAyBF,MAAO,CAGT,OAAO,IAhC4D,wBA6iBrE,WAAgD,IAAnBI,EAAAd,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAO,IAAIe,KAUtC,MATe,CACbD,EAAKE,iBAAiBC,YACrBH,EAAKI,cAAgB,GAAGD,WAAWE,SAAS,EAAG,KAChDL,EAAKM,aAAaH,WAAWE,SAAS,EAAG,KACzCL,EAAKO,cAAcJ,WAAWE,SAAS,EAAG,KAC1CL,EAAKQ,gBAAgBL,WAAWE,SAAS,EAAG,KAC5CL,EAAKS,gBAAgBN,WAAWE,SAAS,EAAG,MAGhCK,KAAK,GAV2B,YAqEhD,WAAmB,IAAAC,EAAAC,EACjB,GAEqB,qBAAXC,QAAwD,oBAAvB,QAAPF,EAAOE,cAAA,IAAAF,OAAA,EAAAA,EAAQG,YAEjD,OAAOD,OAAOC,aAEhB,MAAMC,EAAM,IAAIC,WAAW,IAC3B,GACoB,qBAAXH,QAC4B,oBAA5B,QAAPD,EAAOC,cAAA,IAAAD,OAAA,EAAAA,EAAQK,iBAEfJ,OAAOI,gBAAgBF,QAEvB,IAAK,IAAIG,EAAI,EAAGA,EAAI,GAAIA,IACtBH,EAAIG,GAAKC,KAAKC,MAAsB,IAAhBD,KAAKE,UAG7B,OAAOC,EAAcP,EAlBJ,sBAtqBnB,WACE,OAAOQ,CADoB,SAO7B,SAAczC,GACRyC,GAAaC,EAAeC,OAC9BrE,QAAQsE,IAAR,SAAAjC,OAAqBX,GAFN,kBA0kBnB,SAAuB6C,GACrB,MAAoB,kBAANA,QAAoCvC,KAAlB,OAAAuC,QAAA,IAAAA,OAAA,EAAAA,EAAGC,WADX,iBAI1B,SAAsBC,EAAMC,GAC1B,GAAID,EAAK1C,SAAW2C,EAAK3C,OACvB,OAAO,EAET,IAAK,IAAI+B,EAAI,EAAGa,EAAKF,EAAK1C,OAAQ+B,EAAIa,EAAIb,IACxC,GAAIW,EAAKX,KAAOY,EAAKZ,GACnB,OAAO,EAGX,OAAO,CATyB,uCAgElC,SAA0Bc,GAYxB,OAXKC,IAOHA,EACE,2UACFC,EAAmB,IAAIC,IAAI,CAAC,CAAC,SAAK,cAE7BH,EAAII,WAAWH,GAAgB,CAACI,EAAGC,EAAIC,IACrCD,EAAKA,EAAGE,UAAU,QAAUN,EAAiBO,IAAIF,IAb7B,kBAtb/B,SAAuBG,GACrB,MAAMC,EAAMC,OAAOC,OAAO,MAC1B,IAAK,MAAOC,EAAKC,KAAUL,EACzBC,EAAIG,GAAOC,EAEb,OAAOJ,CALmB,eAN5B,SAAoBA,GAClB,OAAOC,OAAOI,KAAKL,GAAKxD,MADD,sBA/NzB,SAA2B8D,GACrBC,OAAOC,UAAUF,KACnB1B,EAAY0B,EAFkB,wBAgNlC,SAAkBF,GAOhB,OAAOK,OAAOC,aACXN,GAAS,GAAM,IACfA,GAAS,GAAM,IACfA,GAAS,EAAK,IACP,IAARA,EAXqB,wCAiWzB,SAA2Bf,GACzB,GAAIA,EAAI,IAAM,OAAQ,CACpB,IAAIsB,EASJ,GARe,SAAXtB,EAAI,IAA4B,SAAXA,EAAI,GAC3BsB,EAAW,WACS,SAAXtB,EAAI,IAA4B,SAAXA,EAAI,GAClCsB,EAAW,WACS,SAAXtB,EAAI,IAA4B,SAAXA,EAAI,IAA4B,SAAXA,EAAI,KACvDsB,EAAW,SAGTA,EACF,IACE,MAAMC,EAAU,IAAIC,YAAYF,EAAU,CAAEG,OAAO,IAC7CC,EAASC,EAAc3B,GAC7B,OAAOuB,EAAQK,OAAOF,EAHpB,CAIF,MAAOG,GACPxG,EAAA,uBAAAoC,OAA4BoE,EAAG,MADpB,CAfK,CAqBtB,MAAMC,EAAS,GACf,IAAK,IAAI5C,EAAI,EAAGa,EAAKC,EAAI7C,OAAQ+B,EAAIa,EAAIb,IAAK,CAC5C,MAAM6C,EAAOC,EAAwBhC,EAAIiC,WAAW/C,IACpD4C,EAAOI,KAAKH,EAAOX,OAAOC,aAAaU,GAAQ/B,EAAIjH,OAAOmG,GAFd,CAI9C,OAAO4C,EAAOpD,KAAK,GA3BW,8DAkChC,SAA4BsB,GAC1B,OAAOmC,SAASC,mBAAmBpC,GADJ,WAv5BjC,MAAMqC,EAEe,kBAAZC,SACPA,QAAU,KAAO,qBAChBA,QAAQC,SAASC,MAChBF,QAAQC,SAASE,UAAYH,QAAQ9J,MAAyB,YAAjB8J,QAAQ9J,MAzBzDV,EAAAuK,SAAAA,EAAAvK,EAAA4K,gBA2BwB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GA3BxC5K,EAAA6K,qBA4B6B,CAAC,KAAO,EAAG,EAAG,KAAO,EAAG,GA5BrD7K,EAAA8K,wBA8BgC,IA9BhC9K,EAAA+K,YAkCoB,KAlCpB/K,EAAAgL,oBAmC4B,IAC5B,MAAMC,EADsB,IADR,KAlCpBjL,EAAAiL,gBAAAA,EAAAjL,EAAAkL,oBAkD4B,CAC1BC,IAAK,EACLC,QAAS,EACTC,MAAO,EACPC,KAAM,EACNC,kBAAmB,GACnBC,oBAAqB,GACrBC,oBAAqB,GACrBC,OAAQ,KA1DV1L,EAAA2L,eA6DuB,CACrBC,QAAS,EACTC,OAAQ,EACRC,aAAc,EACdC,eAAgB,GAjElB/L,EAAAgM,uBAoE+B,yBApE/BhM,EAAAiM,qBAsE6B,CAC3BL,SAAU,EACVM,KAAM,EACNC,SAAU,EACVC,MAAO,GACPC,IAAK,IA3EPrM,EAAAsM,2BA8EmC,CACjCC,OAAQ,EACRC,OAAQ,EACRC,cAAe,GACfC,eAAgB,GAChBC,iBAAkB,GAClBC,UAAW,GACXC,cAAe,GACfC,YAAa,IAtFf9M,EAAA+M,eA0FuB,CACrB1B,MAAO,EACP2B,gBAAiB,EACjBC,KAAM,GACNC,mBAAoB,GACpBC,uBAAwB,IACxBC,uBAAwB,IACxBC,SAAU,KACVC,mBAAoB,MAlGtBtN,EAAAuN,kBAqG0B,CACxBC,KAAM,EACNC,OAAQ,EACRC,YAAa,EACbC,UAAW,EACXC,iBAAkB,EAClBC,mBAAoB,EACpBC,wBAAyB,EACzBC,YAAa,EACbC,iBAAkB,EAClBC,iBAAkB,GA/GpBjO,EAAAkO,UAkHkB,CAChBC,eAAgB,EAChBC,UAAW,EACXC,WAAY,GArHdrO,EAAAsO,eAwHuB,CACrBC,KAAM,EACNC,KAAM,EACNrC,SAAU,EACVsC,KAAM,EACNC,OAAQ,EACRC,OAAQ,EACRC,QAAS,EACTC,SAAU,EACVC,UAAW,EACXC,UAAW,GACXC,SAAU,GACVC,UAAW,GACX7C,MAAO,GACP8C,MAAO,GACP7C,IAAK,GACL8C,MAAO,GACPC,eAAgB,GAChBC,MAAO,GACPC,MAAO,GACPC,OAAQ,GACRC,OAAQ,GACRC,YAAa,GACbC,QAAS,GACTC,UAAW,GACXC,OAAQ,GACRC,OAAQ,IAlJV7P,EAAA8P,oBAqJ4B,CAC1BC,MAAO,QACPC,MAAO,KAvJThQ,EAAAiQ,eA0JuB,CACrBtC,UAAW,EACXuC,OAAQ,EACR7E,MAAO,EACP8E,OAAQ,EACRC,SAAU,GACVC,OAAQ,GACRC,SAAU,GACVC,OAAQ,IACRC,aAAc,IACdC,eAAgB,KApKlBzQ,EAAA0Q,oBAuK4B,CAC1BJ,SAAU,EACVK,SAAU,EACVC,SAAU,EACVC,UAAW,KACXC,SAAU,KACVC,cAAe,MACfC,MAAO,MACPC,WAAY,MACZC,MAAO,OACPC,KAAM,OACNC,KAAM,OACNC,WAAY,QACZC,YAAa,QACbC,gBAAiB,QACjBC,YAAa,QACbC,KAAM,SACNC,SAAU,SACVC,eAAgB,SAChBC,kBAAmB,UA1LrB5R,EAAA6R,0BA6LkC,CAChCC,MAAO,EACPC,OAAQ,EACRC,QAAS,EACTC,MAAO,EACPlD,UAAW,GAlMb/O,EAAAkS,0BAqMkC,CAChCC,EAAG,cACHC,EAAG,aACHC,EAAG,aACHC,EAAG,WACHC,GAAI,QACJC,GAAI,OACJC,GAAI,WACJC,GAAI,YACJC,GAAI,cACJC,GAAI,gBACJC,EAAG,YACHC,EAAG,SACHC,EAAG,WACHC,EAAG,aAnNLhT,EAAAiT,wBAsNgC,CAC9BC,GAAI,YACJC,GAAI,WACJC,GAAI,UACJC,GAAI,YACJC,GAAI,YA3NNtT,EAAAuT,oBA8N4B,CAC1BC,EAAG,WACHR,EAAG,aAGL,MAAMtL,EAAiB,CACrB+L,OAAQ,EACRC,SAAU,EACV/L,MAAO,GAtOT3H,EAAA0H,eAAAA,EAAA1H,EAAA2T,oBAyO4B,CAC1BzH,KAAM,EACN0H,OAAQ,GA3OV5T,EAAA6T,IA+OY,CAKVC,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,GACT/S,KAAM,GACNgT,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,GAGVC,gBAAiB,GACjBC,cAAe,GAEfC,sBAAuB,GACvBC,2BAA4B,GAC5BC,kBAAmB,GACnBC,wBAAyB,GACzBC,6BAA8B,GAC9BC,wBAAyB,GACzBC,4BAA6B,GAC7BC,yBAA0B,GAC1BC,cAAe,IA9UjBpZ,EAAAqZ,kBAiV0B,CACxBC,cAAe,EACfC,mBAAoB,GAGtB,IAAI9R,EAAYC,EAAegM,SAsB/B,SAASnQ,EAAKyB,GACRyC,GAAaC,EAAegM,UAC9BpQ,QAAQsE,IAAR,YAAAjC,OAAwBX,GAFT,CAMnB,SAASC,EAAYD,GACnB,MAAM,IAAIf,MAAMe,EADQ,CAmE1B,SAASwU,EAAO3Q,EAAK4Q,EAAMxQ,GAAgC,IAAzByQ,EAAAtU,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAahC,OANA0D,OAAO6Q,eAAe9Q,EAAK4Q,EAAM,CAC/BxQ,QACA2Q,YAAaF,EACbG,cAAc,EACdC,UAAU,IAEL7Q,CAbkD,CAmB3D,MAAM8Q,EAAiB,WAErB,SAASA,EAAcrY,EAASlB,GAC1BwZ,KAAKC,cAAgBF,GACvB9U,EAAY,oCAEd+U,KAAKtY,QAAUA,EACfsY,KAAKxZ,KAAOA,CALwB,CAUtC,OAHAuZ,EAAcG,UAAY,IAAIjW,MAC9B8V,EAAcE,YAAcF,EAErBA,CAZ8C,CAAhC,GAkEvB,SAASvS,EAAc2S,GACA,kBAAVA,QAAwC7U,KAAlB,OAAA6U,QAAA,IAAAA,OAAA,EAAAA,EAAO9U,SACtCJ,EAAY,sCAEd,MAAMI,EAAS8U,EAAM9U,OACf+U,EAAqB,KAC3B,GAAI/U,EAAS+U,EACX,OAAO9Q,OAAOC,aAAa8Q,MAAM,KAAMF,GAEzC,MAAMnQ,EAAS,GACf,IAAK,IAAI5C,EAAI,EAAGA,EAAI/B,EAAQ+B,GAAKgT,EAAoB,CACnD,MAAME,EAAWjT,KAAKkT,IAAInT,EAAIgT,EAAoB/U,GAC5CmV,EAAQL,EAAMM,SAASrT,EAAGkT,GAChCtQ,EAAOI,KAAKd,OAAOC,aAAa8Q,MAAM,KAAMG,GAHO,CAKrD,OAAOxQ,EAAOpD,KAAK,GAfS,CAkB9B,SAASiD,EAAc3B,GACF,kBAARA,GACTjD,EAAY,sCAEd,MAAMI,EAAS6C,EAAI7C,OACb8U,EAAQ,IAAIjT,WAAW7B,GAC7B,IAAK,IAAI+B,EAAI,EAAGA,EAAI/B,IAAU+B,EAC5B+S,EAAM/S,GAAyB,IAApBc,EAAIiC,WAAW/C,GAE5B,OAAO+S,CATmB,CA5hB5Bna,EAAA+Z,cAAAA,EAAA/Z,EAAA0a,kBAudA,cAAgCX,EAC9BE,WAAAA,CAAYjV,EAAKiF,GACf0Q,MAAM3V,EAAK,qBACXgV,KAAK/P,KAAOA,CAFS,GAxdzBjK,EAAA4a,sBA8dA,cAAoCb,EAClCE,WAAAA,CAAYjV,EAAK6V,GACfF,MAAM3V,EAAK,yBACXgV,KAAKa,QAAUA,CAFS,GA/d5B7a,EAAA8a,oBAqeA,cAAkCf,EAChCE,WAAAA,CAAYjV,GACV2V,MAAM3V,EAAK,sBADI,GAtenBhF,EAAA+a,oBA2eA,cAAkChB,EAChCE,WAAAA,CAAYjV,GACV2V,MAAM3V,EAAK,sBADI,GA5enBhF,EAAAgb,4BAifA,cAA0CjB,EACxCE,WAAAA,CAAYjV,EAAKiW,GACfN,MAAM3V,EAAK,+BACXgV,KAAKiB,OAASA,CAFS,GAlf3Bjb,EAAAkb,YA2fA,cAA0BnB,EACxBE,WAAAA,CAAYjV,GACV2V,MAAM3V,EAAK,cADI,GA5fnBhF,EAAAmb,eAogBA,cAA6BpB,EAC3BE,WAAAA,CAAYjV,GACV2V,MAAM3V,EAAK,iBADI,GArgBnBhF,EAAAob,YAulBA,MACE,yBAAWC,GACT,OAAO7B,EAAOQ,KAAM,iBAnBxB,WACE,MAAMsB,EAAU,IAAIpU,WAAW,GAG/B,OAFAoU,EAAQ,GAAK,EAEQ,IADN,IAAIC,YAAYD,EAAQ1R,OAAQ,EAAG,GACpC,EAJU,CAmBgByR,GADZ,CAI5B,0BAAWG,GACT,OAAOhC,EAAOQ,KAAM,kBAfxB,WACE,IAEE,OADA,IAAIyB,SAAS,KACN,CAFL,CAGF,MACA,OAAO,CADD,CAJiB,CAegBD,GADZ,CAI7B,qCAAWE,GACT,OAAOlC,EACLQ,KACA,6BAC2B,qBAApB2B,gBAJ6B,CAQxC,mBAAWC,GACT,MAEuB,qBAAdtX,UAEAkV,EAAOQ,KAAM,WAAY,CAAE6B,OAAO,EAAOC,OAAO,IAElDtC,EAAOQ,KAAM,WAAY,CAC9B6B,MAAOvX,UAAUsX,SAASG,SAAS,OACnCD,MAAOxX,UAAUsX,SAASG,SAAS,QATjB,CAatB,8BAAWC,GAAsB,IAAAC,EAAAC,EAC/B,OAAO1C,EACLQ,KACA,sBACA,QAHKiC,EAGLnX,WAAWqX,WAAX,IAAAF,GAAA,QAAAC,EAAAD,EAAgBG,gBAAhB,IAAAF,OAAA,EAAAA,EAAAG,KAAAJ,EAA2B,4BAJE,GASnC,MAAMK,EAAa,IAAIlc,MAAM,KAAK8I,QAAQN,KAAI2T,GAC5CA,EAAElW,SAAS,IAAIE,SAAS,EAAG,OA/nB7BvG,EAAAwc,KAkoBA,MACE,mBAAOC,CAAaC,EAAGC,EAAGC,GACxB,MAAO,IAAPjX,OAAW2W,EAAWI,IAAf/W,OAAoB2W,EAAWK,IAA/BhX,OAAoC2W,EAAWM,GAD3B,CAO7B,kBAAOC,CAAYpI,EAAWqI,GAC5B,IAAIC,EACAtI,EAAU,IACRA,EAAU,GAAK,IACjBsI,EAAOD,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKC,GAEdD,EAAO,IAAMrI,EAAU,GACvBqI,EAAO,IAAMrI,EAAU,GAEnBA,EAAU,GAAK,IACjBsI,EAAOD,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKC,GAEdD,EAAO,IAAMrI,EAAU,GACvBqI,EAAO,IAAMrI,EAAU,KAEvBsI,EAAOD,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKC,EACZA,EAAOD,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKC,EAERtI,EAAU,GAAK,IACjBsI,EAAOD,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKC,GAEdD,EAAO,IAAMrI,EAAU,GACvBqI,EAAO,IAAMrI,EAAU,GAEnBA,EAAU,GAAK,IACjBsI,EAAOD,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKC,GAEdD,EAAO,IAAMrI,EAAU,GACvBqI,EAAO,IAAMrI,EAAU,IAEzBqI,EAAO,IAAMrI,EAAU,GACvBqI,EAAO,IAAMrI,EAAU,GACvBqI,EAAO,IAAMrI,EAAU,GACvBqI,EAAO,IAAMrI,EAAU,EA7Ca,CAiDtC,gBAAOA,CAAUuI,EAAIC,GACnB,MAAO,CACLD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAC3BD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAC3BD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAC3BD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAC3BD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GACnCA,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAPd,CAYzB,qBAAOE,CAAeC,EAAGC,GAGvB,MAAO,CAFID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAKA,EAAE,GAC9BD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAKA,EAAE,GAFf,CAM5B,4BAAOC,CAAsBF,EAAGC,GAC9B,MAAME,EAAIF,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAGjC,MAAO,EAFKD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAME,IACxDH,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAME,EAHrC,CASnC,iCAAOC,CAA2Bb,EAAGU,GACnC,MAAM5U,EAAKwR,KAAKkD,eAAeR,EAAGU,GAC5B3U,EAAKuR,KAAKkD,eAAeR,EAAEc,MAAM,EAAG,GAAIJ,GACxCK,EAAKzD,KAAKkD,eAAe,CAACR,EAAE,GAAIA,EAAE,IAAKU,GACvCM,EAAK1D,KAAKkD,eAAe,CAACR,EAAE,GAAIA,EAAE,IAAKU,GAC7C,MAAO,CACL/V,KAAKkT,IAAI/R,EAAG,GAAIC,EAAG,GAAIgV,EAAG,GAAIC,EAAG,IACjCrW,KAAKkT,IAAI/R,EAAG,GAAIC,EAAG,GAAIgV,EAAG,GAAIC,EAAG,IACjCrW,KAAKsW,IAAInV,EAAG,GAAIC,EAAG,GAAIgV,EAAG,GAAIC,EAAG,IACjCrW,KAAKsW,IAAInV,EAAG,GAAIC,EAAG,GAAIgV,EAAG,GAAIC,EAAG,IATG,CAaxC,uBAAOE,CAAiBR,GACtB,MAAME,EAAIF,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GACjC,MAAO,CACLA,EAAE,GAAKE,GACNF,EAAE,GAAKE,GACPF,EAAE,GAAKE,EACRF,EAAE,GAAKE,GACNF,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAME,GAC7BF,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAME,EARP,CAe3B,oCAAOO,CAA8BT,GACnC,MAAMU,EAAY,CAACV,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAGjCW,EAAIX,EAAE,GAAKU,EAAU,GAAKV,EAAE,GAAKU,EAAU,GAC3ClB,EAAIQ,EAAE,GAAKU,EAAU,GAAKV,EAAE,GAAKU,EAAU,GAC3CE,EAAIZ,EAAE,GAAKU,EAAU,GAAKV,EAAE,GAAKU,EAAU,GAC3CR,EAAIF,EAAE,GAAKU,EAAU,GAAKV,EAAE,GAAKU,EAAU,GAG3CG,GAASF,EAAIT,GAAK,EAClBY,EAAS7W,KAAK8W,MAAMJ,EAAIT,IAAM,EAAI,GAAKS,EAAIT,EAAIU,EAAIpB,IAAM,EACzDwB,EAAKH,EAAQC,GAAU,EACvBG,EAAKJ,EAAQC,GAAU,EAG7B,MAAO,CAAC7W,KAAK8W,KAAKC,GAAK/W,KAAK8W,KAAKE,GAhBK,CAuBxC,oBAAOC,CAAcC,GACnB,MAAM7B,EAAI6B,EAAKf,MAAM,GASrB,OARIe,EAAK,GAAKA,EAAK,KACjB7B,EAAE,GAAK6B,EAAK,GACZ7B,EAAE,GAAK6B,EAAK,IAEVA,EAAK,GAAKA,EAAK,KACjB7B,EAAE,GAAK6B,EAAK,GACZ7B,EAAE,GAAK6B,EAAK,IAEP7B,CAVkB,CAgB3B,gBAAO8B,CAAUC,EAAOC,GACtB,MAAMC,EAAOtX,KAAKsW,IAChBtW,KAAKkT,IAAIkE,EAAM,GAAIA,EAAM,IACzBpX,KAAKkT,IAAImE,EAAM,GAAIA,EAAM,KAErBE,EAAQvX,KAAKkT,IACjBlT,KAAKsW,IAAIc,EAAM,GAAIA,EAAM,IACzBpX,KAAKsW,IAAIe,EAAM,GAAIA,EAAM,KAE3B,GAAIC,EAAOC,EACT,OAAO,KAET,MAAMC,EAAOxX,KAAKsW,IAChBtW,KAAKkT,IAAIkE,EAAM,GAAIA,EAAM,IACzBpX,KAAKkT,IAAImE,EAAM,GAAIA,EAAM,KAErBI,EAAQzX,KAAKkT,IACjBlT,KAAKsW,IAAIc,EAAM,GAAIA,EAAM,IACzBpX,KAAKsW,IAAIe,EAAM,GAAIA,EAAM,KAE3B,OAAIG,EAAOC,EACF,KAGF,CAACH,EAAME,EAAMD,EAAOE,EAxBE,CA4B/B,wBAAOC,CAAkBC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACnD,MAAMC,EAAU,GACdC,EAAS,CAAC,GAAI,IAChB,IAAI1B,EAAGnB,EAAGoB,EAAG0B,EAAGC,EAAIC,EAAIC,EAAMC,EAC9B,IAAK,IAAI1Y,EAAI,EAAGA,EAAI,IAAKA,EAUvB,GATU,IAANA,GACFwV,EAAI,EAAIoC,EAAK,GAAKE,EAAK,EAAIE,EAC3BrB,GAAK,EAAIiB,EAAK,EAAIE,EAAK,EAAIE,EAAK,EAAIE,EACpCtB,EAAI,EAAIkB,EAAK,EAAIF,IAEjBpC,EAAI,EAAIqC,EAAK,GAAKE,EAAK,EAAIE,EAC3BtB,GAAK,EAAIkB,EAAK,EAAIE,EAAK,EAAIE,EAAK,EAAIE,EACpCvB,EAAI,EAAImB,EAAK,EAAIF,GAEf5X,KAAK0Y,IAAIhC,GAAK,MAAlB,CACE,GAAI1W,KAAK0Y,IAAInD,GAAK,MAChB,SAEF8C,GAAK1B,EAAIpB,EACL,EAAI8C,GAAKA,EAAI,GACfF,EAAQpV,KAAKsV,EANQ,MAUzBG,EAAOjD,EAAIA,EAAI,EAAIoB,EAAID,EACvB+B,EAAWzY,KAAK8W,KAAK0B,GACjBA,EAAO,IAGXF,IAAO/C,EAAIkD,IAAa,EAAI/B,GACxB,EAAI4B,GAAMA,EAAK,GACjBH,EAAQpV,KAAKuV,GAEfC,IAAOhD,EAAIkD,IAAa,EAAI/B,GACxB,EAAI6B,GAAMA,EAAK,GACjBJ,EAAQpV,KAAKwV,IAIjB,IACEI,EADEC,EAAIT,EAAQna,OAEhB,MAAM6a,EAAOD,EACb,KAAOA,KACLP,EAAIF,EAAQS,GACZD,EAAK,EAAIN,EACTD,EAAO,GAAGQ,GACRD,EAAKA,EAAKA,EAAKhB,EACf,EAAIgB,EAAKA,EAAKN,EAAIR,EAClB,EAAIc,EAAKN,EAAIA,EAAIN,EACjBM,EAAIA,EAAIA,EAAIJ,EACdG,EAAO,GAAGQ,GACRD,EAAKA,EAAKA,EAAKf,EACf,EAAIe,EAAKA,EAAKN,EAAIP,EAClB,EAAIa,EAAKN,EAAIA,EAAIL,EACjBK,EAAIA,EAAIA,EAAIH,EAShB,OANAE,EAAO,GAAGS,GAAQlB,EAClBS,EAAO,GAAGS,GAAQjB,EAClBQ,EAAO,GAAGS,EAAO,GAAKZ,EACtBG,EAAO,GAAGS,EAAO,GAAKX,EACtBE,EAAO,GAAGpa,OAASoa,EAAO,GAAGpa,OAAS6a,EAAO,EAEtC,CACL7Y,KAAKkT,OAAOkF,EAAO,IACnBpY,KAAKkT,OAAOkF,EAAO,IACnBpY,KAAKsW,OAAO8B,EAAO,IACnBpY,KAAKsW,OAAO8B,EAAO,IAnEkC,GAwE3D,MAAMvV,EAA0B,CAC9B,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACxE,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC5E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,IACxE,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAChE,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,IAAO,IAAO,IAAO,IAAO,IACpE,IAAO,IAAO,IAAO,IAAO,IAAO,EAAG,MAiCxC,SAASrE,EAAmBqC,GAC1B,OAAOiY,mBAAmBC,OAAOlY,GADF,CAwBe,IAAAmY,EAAA,IAAAC,QA/7BhDtgB,EAAAugB,kBA48BA,MAGEtG,WAAAA,GAAcuG,2BAAA,KAAAH,GAFH,GAMTrG,KAAKyG,QAAU,IAAIC,SAAQ,CAACC,EAASC,KAInC5G,KAAK2G,QAAUE,IACbC,sBAAAT,EAAArG,MAAgB,GAChB2G,EAAQE,EAAR,EAMF7G,KAAK4G,OAASG,IAIZD,sBAAAT,EAAArG,MAAgB,GAChB4G,EAAOG,EAAP,CALF,GAhBU,CA6Bd,WAAIC,GACF,OAAAC,sBAAAZ,EAAOrG,KADK,GAKhB,IAAI7R,EAAiB,KACjBC,EAAmB,KAl/BvBpI,EAAAkhB,iBAyhCyB,ioBCtgCzB,IAAAC,MAAAC,oBAAA,GAsBAC,oBAAAD,oBAAA,GAKAE,eAAAF,oBAAA,GAaAG,aAAAH,oBAAA,GACAI,mBAAAJ,oBAAA,IAMAK,QAAAL,oBAAA,IACAM,gBAAAN,oBAAA,IACAO,iBAAAP,oBAAA,IACAQ,UAAAR,oBAAA,IACAS,yBAAAT,oBAAA,IACAU,kBAAAV,oBAAA,IACAW,qBAAAX,oBAAA,IACAY,gBAAAZ,oBAAA,IACAa,oBAAAb,oBAAA,IACAc,YAAAd,oBAAA,IACAe,UAAAf,oBAAA,IAEA,MAAMgB,yBAA2B,MAC3BC,4BAA8B,IAC9BC,wBAA0B,IAE1BC,qBAC2DpB,MAAA5W,SAC3DiX,mBAAAgB,kBACAlB,eAAAmB,iBArFNziB,QAAAuiB,qBAAAA,qBAsFA,MAAMG,yBAC2DvB,MAAA5W,SAC3DiX,mBAAAmB,sBACArB,eAAAsB,qBAzFN5iB,QAAA0iB,yBAAAA,yBA0FA,MAAMG,qBAC2D1B,MAAA5W,SAC3DiX,mBAAAsB,kBACAxB,eAAAyB,iBA7FN/iB,QAAA6iB,qBAAAA,qBA8FA,MAAMG,+BAC2D7B,MAAA5W,SAC3DiX,mBAAAyB,4BACA3B,eAAA4B,2BA0IN,SAASC,YAAYC,GAAK,IAAAC,EAAAC,EAQxB,GANqB,kBAARF,GAAoBA,aAAerd,IAC5Cqd,EAAM,CAAEle,IAAKke,IACJ,EAAAjC,MAAAoC,eAAcH,KACvBA,EAAM,CAAEvC,KAAMuC,IAGC,kBAARA,EACT,MAAM,IAAInf,MAAM,4DAElB,IAAKmf,EAAIle,MAAQke,EAAIvC,OAASuC,EAAIxhB,MAChC,MAAM,IAAIqC,MACR,+DAGJ,MAAMuf,EAAO,IAAIC,wBACX,MAAEC,GAAUF,EAEZte,EAAMke,EAAIle,IAAMye,WAAWP,EAAIle,KAAO,KACtC2b,EAAOuC,EAAIvC,KAAO+C,YAAYR,EAAIvC,MAAQ,KAC1CgD,EAAcT,EAAIS,aAAe,KACjCC,GAA0C,IAAxBV,EAAIU,gBACtBC,EAAW,QAAXV,EAAWD,EAAIW,gBAAJ,IAAAV,EAAAA,EAAgB,KAC3BW,EACJZ,EAAIxhB,iBAAiBqiB,sBAAwBb,EAAIxhB,MAAQ,KACrDsiB,EACJ9a,OAAOC,UAAU+Z,EAAIc,iBAAmBd,EAAIc,eAAiB,EACzDd,EAAIc,eACJ9B,yBACN,IAAI+B,EAASf,EAAIe,kBAAkBC,UAAYhB,EAAIe,OAAS,KAC5D,MAAM1c,EAAY2b,EAAI3b,UAIhB4c,EACsB,kBAAnBjB,EAAIiB,aAA4B,EAAA/C,eAAAgD,cAAalB,EAAIiB,YAEpD,KADAjB,EAAIiB,WAEJE,EAAiC,kBAAhBnB,EAAImB,QAAuBnB,EAAImB,QAAU,KAC1DC,GAAgC,IAAnBpB,EAAIoB,WACjBC,EAAoBrB,EAAIqB,mBAAqB/B,yBAC7CgC,EAC+B,kBAA5BtB,EAAIsB,oBACPtB,EAAIsB,oBACJ,KACAC,EACJvB,EAAIuB,yBAA2B3B,+BAC3B4B,GAAoC,IAArBxB,EAAIyB,aACnBC,EACJ1b,OAAOC,UAAU+Z,EAAI0B,eAAiB1B,EAAI0B,cAAgB,EACtD1B,EAAI0B,cACH,EACDtJ,GAA0C,IAAxB4H,EAAI5H,gBACtBE,EACsC,mBAAnC0H,EAAI1H,2BACP0H,EAAI1H,4BACHyF,MAAA5W,SACDwa,EAAuB3b,OAAOC,UAAU+Z,EAAI2B,sBAC9C3B,EAAI2B,sBACH,EACCC,EAC2B,mBAAxB5B,EAAI4B,gBAAgC5B,EAAI4B,gBAAkB7D,MAAA5W,SAC7D0a,GAAkD,IAA5B7B,EAAI6B,oBAC1BC,GAA8B,IAAlB9B,EAAI8B,UAChBC,EAAgB/B,EAAI+B,eAAiBrgB,WAAW9C,SAChDojB,GAAoC,IAArBhC,EAAIgC,aACnBC,GAAsC,IAAtBjC,EAAIiC,cACpBC,GAA4C,IAAzBlC,EAAIkC,iBACvBC,GAAwB,IAAfnC,EAAImC,OAGblgB,EAAS2e,EAAiBA,EAAe3e,OAAS,QAAzCie,EAAyCF,EAAI/d,cAAJ,IAAAie,EAAAA,EAAckC,IAChEC,EAC0B,mBAAvBrC,EAAIqC,eACPrC,EAAIqC,gBACHtE,MAAA5W,WAAaya,EACdU,EAC0B,mBAAvBtC,EAAIsC,eACPtC,EAAIsC,eAEHjB,IAAsBnD,eAAAsB,sBACrB+B,IAA4BrD,eAAA4B,4BAC5BqB,GACAG,IACA,EAAApD,eAAAqE,iBAAgBpB,EAASviB,SAAS4jB,WAClC,EAAAtE,eAAAqE,iBAAgBjB,EAAqB1iB,SAAS4jB,SAChDC,EACJzC,EAAIyC,eAAiB,IAAItD,qBAAqB,CAAE4C,kBAC5CW,EACJ1C,EAAI0C,eAAiB,IAAIjD,qBAAqB,CAAEa,QAAOyB,mBASzD,EAAAhE,MAAA4E,mBAAkBte,GAIlB,MAAMue,EAAmB,CACvBH,gBACAC,iBAYF,GAVKJ,IACHM,EAAiBC,kBAAoB,IAAIxB,EAAkB,CACzDtf,QAASof,EACT2B,aAAc1B,IAEhBwB,EAAiBG,wBAA0B,IAAIxB,EAAwB,CACrExf,QAASuf,MAIRP,EAAQ,CACX,MAAMiC,EAAe,CACnB3e,YACA4e,KAAM3E,gBAAA4E,oBAAoBC,YAI5BpC,EAASiC,EAAaC,KAClBjC,UAAUoC,SAASJ,GACnB,IAAIhC,UAAUgC,GAClB5C,EAAKiD,QAAUtC,CAVJ,CAab,MAAMuC,EAAiB,CACrBhD,QACAiD,WAEM,WAEN9F,OACAkD,WACAuB,mBACApB,iBACA7e,SACAgf,aACAa,YACA0B,iBAAkB,CAChB9B,eACAE,kBACAJ,eACApJ,kBACAE,6BACAqJ,uBACAE,sBACAQ,iBACAlB,QAASmB,EAAiBnB,EAAU,KACpCG,oBAAqBgB,EAAiBhB,EAAsB,OAG1DmC,EAAkB,CACtBjC,eACApJ,kBACAwJ,kBACAC,sBACAC,YACAC,gBACAG,mBACAC,SACAuB,aArEI,MAqJN,OA7EA3C,EAAO1D,QACJsG,MAAK,WACJ,GAAIvD,EAAKwD,UACP,MAAM,IAAI/iB,MAAM,mBAGlB,MAAMgjB,EAAkBC,eAAe/C,EAAQuC,GACzCS,EAAuB,IAAIzG,SAAQ,SAAUC,GACjD,IAAIyG,EAkB6BC,MAjB7BrD,EACFoD,EAAgB,IAAItF,kBAAAwF,uBAClB,CACEjiB,SACAkiB,YAAavD,EAAeuD,YAC5BC,gBAAiBxD,EAAewD,gBAChCC,2BACEzD,EAAeyD,2BACjBrC,eACAC,iBAEFrB,GAEQnD,IAIqBwG,EAaQ,CACrCniB,MACAG,SACAwe,cACAC,kBACAI,iBACAkB,eACAC,iBAPF+B,EATIjG,MAAA5W,SAEO,IAAI0X,oBAAAyF,cAAcL,IAEpB,EAAA/F,eAAAqE,iBAAgB0B,EAAOniB,KAC1B,IAAI6c,qBAAA4F,eAAeN,GACnB,IAAIrF,gBAAA4F,iBAAiBP,IAa7B1G,EAAQyG,EA1CkD,IA6C5D,OAAO1G,QAAQne,IAAI,CAAC0kB,EAAiBE,IAAuBJ,MAC1D,SAAAc,GAAqC,IAA1BC,EAAUV,GAArBS,EACE,GAAIrE,EAAKwD,UACP,MAAM,IAAI/iB,MAAM,mBAGlB,MAAM8jB,EAAiB,IAAIpG,iBAAAqG,eACzBtE,EACAoE,EACA3D,EAAOkC,MAEH4B,EAAY,IAAIC,gBACpBH,EACAvE,EACA4D,EACAP,EACAb,GAEFxC,EAAK2E,WAAaF,EAClBF,EAAeK,KAAK,QAAS,KAlBM,GApDvB,IA0EjBC,MAAM7E,EAAK8E,YAAY1H,QAEnB4C,CArPiB,CAiQ1B+E,eAAerB,eAAe/C,EAAQqE,GACpC,GAAIrE,EAAO6C,UACT,MAAM,IAAI/iB,MAAM,wBAElB,MAAM6jB,QAAiB3D,EAAO4D,eAAeU,gBAC3C,gBACAD,EACAA,EAAO3H,KAAO,CAAC2H,EAAO3H,KAAKjX,QAAU,MAGvC,GAAIua,EAAO6C,UACT,MAAM,IAAI/iB,MAAM,wBAElB,OAAO6jB,CAbqC,CAgB9C,SAASnE,WAAW+E,GAIlB,GAAIA,aAAe3iB,IACjB,OAAO2iB,EAAIC,KAEb,IAEE,OAAO,IAAI5iB,IAAI2iB,EAAKllB,OAAOolB,UAAUD,IAFnC,CAGF,MACA,GAGExH,MAAA5W,UACe,kBAARme,EAEP,OAAOA,CAPH,CAUR,MAAM,IAAIzkB,MACR,qFArBqB,CA0BzB,SAAS2f,YAAY8E,GAEnB,GAGEvH,MAAA5W,UACkB,qBAAXse,QACPH,aAAeG,OAEf,MAAM,IAAI5kB,MACR,qEAGJ,GAAIykB,aAAexhB,YAAcwhB,EAAI5gB,aAAe4gB,EAAI9e,OAAO9B,WAI7D,OAAO4gB,EAET,GAAmB,kBAARA,EACT,OAAO,EAAAvH,MAAAtX,eAAc6e,GAEvB,GAAoB,kBAARA,IAAqBI,MAAM,OAAAJ,QAAA,IAAAA,OAAA,EAAAA,EAAKrjB,UAAY,EAAA8b,MAAAoC,eAAcmF,GACpE,OAAO,IAAIxhB,WAAWwhB,GAExB,MAAM,IAAIzkB,MACR,6GA1BsB,CAthB1BjE,QAAAgjB,+BAAAA,+BAgkBA,MAAMS,uBAGJxJ,WAAAA,GAAc,IAAA8O,EAAAC,EACZhP,KAAKsO,YAAc,IAAInH,MAAAZ,kBACvBvG,KAAKmO,WAAa,KAClBnO,KAAKyM,QAAU,KAMfzM,KAAK0J,MAAL,IAAA/d,QAAAsjB,OAAA1gB,GAAAwgB,EAAAE,OAAA1gB,EAAAygB,EAAAD,IAAAA,GAAAC,IAMAhP,KAAKgN,WAAY,EAQjBhN,KAAKkP,WAAa,KAQlBlP,KAAKmP,WAAa,IA/BN,CAsCd,WAAI1I,GACF,OAAOzG,KAAKsO,YAAY7H,OADZ,CASd,aAAM2I,GACJpP,KAAKgN,WAAY,EACjB,IAAI,IAAAqC,EAAAC,EACE,QAAJD,EAAIrP,KAAKyM,eAAL,IAAA4C,GAAAA,EAAchD,OAChBrM,KAAKyM,QAAQ8C,iBAAkB,SAE3B,QAAND,EAAMtP,KAAKmO,kBAAL,IAAAmB,OAAA,EAAAA,EAAiBF,UAJrB,CAKF,MAAOrf,GAAI,IAAAyf,EAIX,MAHI,QAAJA,EAAIxP,KAAKyM,eAAL,IAAA+C,GAAAA,EAAcnD,aACTrM,KAAKyM,QAAQ8C,gBAEhBxf,CAJK,CAObiQ,KAAKmO,WAAa,KACdnO,KAAKyM,UACPzM,KAAKyM,QAAQ2C,UACbpP,KAAKyM,QAAU,KAjBH,EAlDW,IAAAwC,OAAA,CAAA1gB,EACX,GAjkBlBvI,QAAAyjB,uBAAAA,uBA+oBA,MAAMQ,sBAOJhK,WAAAA,CACE5U,EACAkiB,GAGA,IAFAC,EAAApiB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACAqiB,EAAAriB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,KAE7B4U,KAAK3U,OAASA,EACd2U,KAAKuN,YAAcA,EACnBvN,KAAKwN,gBAAkBA,EACvBxN,KAAKyN,2BAA6BA,EAElCzN,KAAKyP,gBAAkB,GACvBzP,KAAK0P,mBAAqB,GAC1B1P,KAAK2P,0BAA4B,GACjC3P,KAAK4P,0BAA4B,GACjC5P,KAAK6P,iBAAmB,IAAI1I,MAAAZ,iBAV5B,CAgBFuJ,gBAAAA,CAAiBC,GACf/P,KAAKyP,gBAAgBrf,KAAK2f,EADD,CAO3BC,mBAAAA,CAAoBD,GAClB/P,KAAK0P,mBAAmBtf,KAAK2f,EADD,CAO9BE,0BAAAA,CAA2BF,GACzB/P,KAAK2P,0BAA0Bvf,KAAK2f,EADD,CAOrCG,0BAAAA,CAA2BH,GACzB/P,KAAK4P,0BAA0Bxf,KAAK2f,EADD,CAQrCI,WAAAA,CAAYC,EAAO5P,GACjB,IAAK,MAAMuP,KAAY/P,KAAKyP,gBAC1BM,EAASK,EAAO5P,EAFM,CAU1B6P,cAAAA,CAAeC,EAAQC,GACrBvQ,KAAK6P,iBAAiBpJ,QAAQsG,MAAK,KACjC,IAAK,MAAMgD,KAAY/P,KAAK0P,mBAC1BK,EAASO,EAAQC,EAD6B,GAFtB,CAW9BC,qBAAAA,CAAsBhQ,GACpBR,KAAK6P,iBAAiBpJ,QAAQsG,MAAK,KACjC,IAAK,MAAMgD,KAAY/P,KAAK2P,0BAC1BI,EAASvP,EAD4C,GAF9B,CAQ7BiQ,qBAAAA,GACEzQ,KAAK6P,iBAAiBpJ,QAAQsG,MAAK,KACjC,IAAK,MAAMgD,KAAY/P,KAAK4P,0BAC1BG,GADqD,GAFnC,CAQxBW,cAAAA,GACE1Q,KAAK6P,iBAAiBlJ,SADP,CAQjBgK,gBAAAA,CAAiBP,EAAOQ,IACtB,EAAAzJ,MAAAlc,aAAY,yDADe,CAI7B4lB,KAAAA,GAAS,EAzvBX7qB,QAAAikB,sBAAAA,sBA+vBA,MAAM6G,iBACJ7Q,WAAAA,CAAY8Q,EAAS9C,GACnBjO,KAAKgR,SAAWD,EAChB/Q,KAAKmO,WAAaF,EAGhBnf,OAAO6Q,eAAeK,KAAM,gBAAiB,CAC3C/Q,MAAOA,MACL,EAAAqY,eAAA2J,YACE,yFAGKjR,KAAKkR,eAAenE,MAAKoE,IAC9B,IAAKA,EACH,OAAOA,EAET,MAAMC,EAAQ,GACd,IAAK,MAAM5qB,KAAQ2qB,EACjBC,EAAMhhB,QAAQ+gB,EAAG3qB,IAEnB,OAAO4qB,CAAP,MAnBsB,CA+ChC,qBAAIC,GACF,OAAOrR,KAAKmO,WAAWkD,iBADD,CAOxB,iBAAIvF,GACF,OAAO9L,KAAKmO,WAAWrC,aADL,CAOpB,YAAIwF,GACF,OAAOtR,KAAKgR,SAASM,QADR,CAUf,gBAAIC,GACF,OAAOvR,KAAKgR,SAASO,YADJ,CAOnB,aAAIC,GACF,OAAO,EAAArK,MAAA3H,QAAOQ,KAAM,cAAeA,KAAKmO,WAAWsD,YADrC,CAUhB,cAAIC,GACF,OAAO1R,KAAKmO,WAAWsD,WADR,CASjBE,OAAAA,CAAQC,GACN,OAAO5R,KAAKmO,WAAWwD,QAAQC,EADb,CASpBC,YAAAA,CAAaC,GACX,OAAO9R,KAAKmO,WAAW0D,aAAaC,EADpB,CAUlBC,eAAAA,GACE,OAAO/R,KAAKmO,WAAW4D,iBADP,CAUlBC,cAAAA,CAAeC,GACb,OAAOjS,KAAKmO,WAAW6D,eAAeC,EADrB,CASnBC,aAAAA,GACE,OAAOlS,KAAKmO,WAAW+D,eADT,CAQhBC,aAAAA,GACE,OAAOnS,KAAKmO,WAAWgE,eADT,CAQhBC,WAAAA,GACE,OAAOpS,KAAKmO,WAAWiE,aADX,CASdC,oBAAAA,GACE,OAAOrS,KAAKmO,WAAWkE,sBADF,CASvBC,aAAAA,GACE,OAAOtS,KAAKmO,WAAWmE,eADT,CAQhBC,cAAAA,GACE,OAAOvS,KAAKmO,WAAWoE,gBADR,CAWjBrB,YAAAA,GACE,OAAOlR,KAAKmO,WAAWqE,iBADV,CAuBfC,UAAAA,GACE,OAAOzS,KAAKmO,WAAWsE,YADZ,CASbC,wBAAAA,GACE,OAAO1S,KAAKmO,WAAWuE,0BADE,CAS3BC,cAAAA,GACE,OAAO3S,KAAKmO,WAAWwE,gBADR,CAWjBC,WAAAA,GACE,OAAO5S,KAAKmO,WAAWyE,aADX,CAiBdC,WAAAA,GACE,OAAO7S,KAAKmO,WAAW0E,aADX,CAQdC,OAAAA,GACE,OAAO9S,KAAKmO,WAAW2E,SADf,CAQVC,YAAAA,GACE,OAAO/S,KAAKmO,WAAW4E,cADV,CASfC,eAAAA,GACE,OAAOhT,KAAKmO,WAAW8E,uBAAuBxM,OAD9B,CAgBlByM,OAAAA,GAAiC,IAAzBC,EAAA/nB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACN,OAAO4U,KAAKmO,WAAWiF,aAAaD,GAAmBnT,KAAKwR,UAD7B,CAOjCpC,OAAAA,GACE,OAAOpP,KAAKqT,YAAYjE,SADhB,CAQV,iBAAIkE,GACF,OAAOtT,KAAKmO,WAAWmF,aADL,CAOpB,eAAID,GACF,OAAOrT,KAAKmO,WAAWkF,WADP,CASlBE,eAAAA,GACE,OAAOvT,KAAKmO,WAAWoF,iBADP,CAQlBC,YAAAA,GACE,OAAOxT,KAAKmO,WAAWqF,cADV,CASfC,sBAAAA,GACE,OAAOzT,KAAKmO,WAAWsF,wBADA,EA1lC3BztB,QAAA8qB,iBAAAA,iBAAA,IAAA4C,uBAAA,IAAApN,QAAAqN,gBAAA,IAAArN,QAAAsN,oBAAA,IAAAC,QAgxCA,MAAMC,aAKJ7T,WAAAA,CAAY8T,EAAWC,EAAU/F,GAA2B,IAAhB1C,EAAAngB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAA5C6oB,4BAAA,KAAAL,qBAAApN,2BAAA,KAAAkN,uBAJyB,MAAzBlN,2BAAA,KAAAmN,iBAEkB,GAGhB3T,KAAKkU,WAAaH,EAClB/T,KAAKmU,UAAYH,EACjBhU,KAAKmO,WAAaF,EAClBjO,KAAKoU,OAAS7I,EAAS,IAAIjE,eAAA+M,UAAc,KACzCrU,KAAKsU,QAAU/I,EAEfvL,KAAKuU,WAAatG,EAAUsG,WAC5BvU,KAAKwU,KAAO,IAAIC,WAEhBzU,KAAK0U,0BAA2B,EAChC1U,KAAK2U,cAAgB,IAAItmB,IACzB2R,KAAKgN,WAAY,CAZyC,CAkB5D,cAAI4E,GACF,OAAO5R,KAAKkU,WAAa,CADV,CAOjB,UAAIU,GACF,OAAO5U,KAAKmU,UAAUS,MADX,CAOb,OAAI9C,GACF,OAAO9R,KAAKmU,UAAUrC,GADd,CAOV,YAAI+C,GACF,OAAO7U,KAAKmU,UAAUU,QADT,CAQf,QAAIC,GACF,OAAO9U,KAAKmU,UAAUW,IADb,CASXC,WAAAA,GAMQ,IANI,MACVC,EADU,SAEVC,EAAWjV,KAAK4U,OAFN,QAGVM,EAAU,EAHA,QAIVC,EAAU,EAJA,SAKVC,GAAW,GALDhqB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAMR,CAAC,EACH,OAAO,IAAIkc,eAAA+N,aAAa,CACtBC,QAAStV,KAAK8U,KACdE,QACAC,WACAC,UACAC,UACAC,YAPI,CAgBRG,cAAAA,GAA4C,IAA7B,OAAEC,EAAS,WAAXpqB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,CAAC,EACvC,MAAMqqB,EAAazV,KAAKmO,WAAWuH,mBAAmBF,GAEtD,OAAOxV,KAAKmO,WAAWoH,eACrBvV,KAAKkU,WACLuB,EAAWE,gBAL6B,CAa5CzE,YAAAA,GACE,OAAOlR,KAAKmO,WAAWyH,iBAAiB5V,KAAKkU,WADhC,CAOf,iBAAIpI,GACF,OAAO9L,KAAKmO,WAAWrC,aADL,CAOpB,aAAI0F,GACF,OAAO,EAAArK,MAAA3H,QAAOQ,KAAM,cAAeA,KAAKmO,WAAWsD,YADrC,CAUhB,YAAMoE,GAAS,IAAAC,EACb,OAAO,QAAAA,EAAA9V,KAAKmO,WAAWsD,mBAAhB,IAAAqE,OAAA,EAAAA,EAA6BC,SAAS/V,KAAKkU,cAAe,IADpD,CAWf8B,MAAAA,CAAAC,GAWG,IAAAC,EAAAC,EAAA,IAXI,cACLC,EADK,SAELC,EAFK,OAGLb,EAAS,UAHJ,eAILc,EAAiBnP,MAAAxV,eAAeE,OAJ3B,UAKL4I,EAAY,KALP,WAML8b,EAAa,KANR,6BAOLC,EAA+B,KAP1B,oBAQLC,EAAsB,KARjB,WASLC,EAAa,KATR,uBAULC,EAAyB,MAV3BV,EAYE,QAAAC,EAAAlW,KAAKoU,cAAL,IAAA8B,GAAAA,EAAaU,KAAK,WAElB,MAAMnB,EAAazV,KAAKmO,WAAWuH,mBACjCF,EACAc,EACAK,GAIF7P,sBAAA6M,gBAAA3T,MAAuB,GAEvB6W,kBAAAjD,oBAAA5T,KAAA8W,sBAAAzU,KAAArC,MAEKwW,IACHA,EAA+BxW,KAAKmO,WAAWuE,4BAGjD,IAAIqE,EAAc/W,KAAK2U,cAAchmB,IAAI8mB,EAAWuB,UAC/CD,IACHA,EAAcjoB,OAAOC,OAAO,MAC5BiR,KAAK2U,cAAcsC,IAAIxB,EAAWuB,SAAUD,IAI1CA,EAAYG,4BACdC,aAAaJ,EAAYG,2BACzBH,EAAYG,0BAA4B,MAG1C,MAAME,KACJ3B,EAAWE,gBAAkBxO,MAAAjW,oBAAoBG,OAKV,IAAAgmB,EAApCN,EAAYO,yBACfP,EAAYO,uBAAyB,IAAInQ,MAAAZ,kBACzCwQ,EAAYQ,aAAe,CACzBC,QAAS,GACTC,UAAW,GACXC,WAAW,EACXC,eAAgB,MAGlB,QAAAN,EAAArX,KAAKoU,cAAL,IAAAiD,GAAAA,EAAaT,KAAK,gBAClB5W,KAAK4X,kBAAkBnC,IAGzB,MAAMoC,EAAW1tB,IAAS,IAAA2tB,EAAAC,EACxBhB,EAAYiB,YAAYC,OAAOC,IAI3BlY,KAAK0U,0BAA4B0C,IACnCtQ,sBAAA6M,gBAAA3T,MAAuB,GAEzB6W,kBAAAjD,oBAAA5T,KAAAmY,aAAA9V,KAAArC,MAAkCoX,GAE9BjtB,GACF+tB,EAAmBE,WAAWxR,OAAOzc,GAErC6V,KAAKqY,mBAAmB,CACtBtB,cACAhQ,OAAQ5c,aAAiBF,MAAQE,EAAQ,IAAIF,MAAME,MAGrD+tB,EAAmBE,WAAWzR,UAGhC,QAAAmR,EAAA9X,KAAKoU,cAAL,IAAA0D,GAAAA,EAAaQ,QAAQ,aACrB,QAAAP,EAAA/X,KAAKoU,cAAL,IAAA2D,GAAAA,EAAaO,QAAQ,UAArB,EAGIJ,EAAqB,IAAIK,mBAAmB,CAChDC,SAAUX,EAEVxK,OAAQ,CACN+I,gBACAC,WACA5b,YACA8b,cAEF/B,KAAMxU,KAAKwU,KACXD,WAAYvU,KAAKuU,WACjBkC,sBACAc,aAAcR,EAAYQ,aAC1BxD,UAAW/T,KAAKkU,WAChBrI,cAAe7L,KAAKmO,WAAWtC,cAC/BC,cAAe9L,KAAKmO,WAAWrC,cAC/B2M,0BAA2BrB,EAC3B7L,OAAQvL,KAAKsU,QACboC,iBAGDP,EAAAY,GAAYiB,cAAZ7B,EAAY6B,YAAgB,IAAIU,MAAOC,IAAIT,GAC5C,MAAMU,EAAaV,EAAmB1O,KAqBtC,OAnBA9C,QAAQne,IAAI,CACVwuB,EAAYO,uBAAuB7Q,QACnC+P,IAECzJ,MAAK8L,IAA2C,IAAAC,EAAA,IAAzCC,EAAcC,GAAhBH,EACA7Y,KAAKgN,UACP6K,KAGF,QAAAiB,EAAA9Y,KAAKoU,cAAL,IAAA0E,GAAAA,EAAalC,KAAK,aAElBsB,EAAmBe,mBAAmB,CACpCF,eACAC,0BAEFd,EAAmBgB,sBAAnB,IAED7K,MAAMwJ,GAEFe,CArHN,CA8HHO,eAAAA,GAIQ,IAJQ,OACd3D,EAAS,UADK,eAEdc,EAAiBnP,MAAAxV,eAAeE,OAFlB,uBAGd8kB,EAAyB,MAHXvrB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAIZ,CAAC,EAYH,MAAMqqB,EAAazV,KAAKmO,WAAWuH,mBACjCF,EACAc,EACAK,GACiB,GAEnB,IAKIyC,EALArC,EAAc/W,KAAK2U,cAAchmB,IAAI8mB,EAAWuB,UAOb,IAAAqC,EAAAC,EAevC,OArBKvC,IACHA,EAAcjoB,OAAOC,OAAO,MAC5BiR,KAAK2U,cAAcsC,IAAIxB,EAAWuB,SAAUD,IAIzCA,EAAYwC,uBACfH,EAAatqB,OAAOC,OAAO,MAC3BqqB,EAAWF,oBAvBb,WACMnC,EAAYQ,aAAaG,YAC3BX,EAAYwC,qBAAqB5S,QAAQoQ,EAAYQ,cAErDR,EAAYiB,YAAYC,OAAOmB,GAJJ,EAwB7BrC,EAAYwC,qBAAuB,IAAIpS,MAAAZ,oBACtC8S,EAAAtC,GAAYiB,cAAZqB,EAAYrB,YAAgB,IAAIU,MAAOC,IAAIS,GAC5CrC,EAAYQ,aAAe,CACzBC,QAAS,GACTC,UAAW,GACXC,WAAW,EACXC,eAAgB,MAGlB,QAAA2B,EAAAtZ,KAAKoU,cAAL,IAAAkF,GAAAA,EAAa1C,KAAK,gBAClB5W,KAAK4X,kBAAkBnC,IAElBsB,EAAYwC,qBAAqB9S,OAxClC,CAkDR+S,iBAAAA,GAGQ,IAHU,qBAChBC,GAAuB,EADP,qBAEhBC,GAAuB,GAFPtuB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAGd,CAAC,EAGH,OAAO4U,KAAKmO,WAAWJ,eAAe4L,eACpC,iBACA,CACE5F,UAAW/T,KAAKkU,WAChBuF,sBAA+C,IAAzBA,EACtBC,sBAA+C,IAAzBA,GAExB,CACEE,cAV4B,IAW5BC,KAAKzxB,GACIA,EAAY0xB,MAAMzuB,QAbzB,CA2BR0uB,cAAAA,GAA4B,IAAb1M,EAAAjiB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAS,CAAC,EACvB,GAAI4U,KAAKmO,WAAWsD,YAGlB,OAAOzR,KAAK6V,SAAS9I,MAAKiN,GACjB7R,UAAA8R,QAAQ7xB,YAAY4xB,KAG/B,MAAME,EAAiBla,KAAKwZ,kBAAkBnM,GAE9C,OAAO,IAAI3G,SAAQ,SAAUC,EAASC,GAapC,MAAMuT,EAASD,EAAeE,YACxBhyB,EAAc,CAClB0xB,MAAO,GACPO,OAAQvrB,OAAOC,OAAO,QAfxB,SAASurB,IACPH,EAAOI,OAAOxN,MAAK,SAAAyN,GAA2B,IAAjB,MAAEvrB,EAAF,KAASwrB,GAAnBD,EACbC,EACF9T,EAAQve,IAGV0G,OAAO4rB,OAAOtyB,EAAYiyB,OAAQprB,EAAMorB,QACxCjyB,EAAY0xB,MAAM1pB,QAAQnB,EAAM6qB,OAChCQ,IAP4C,GAQ3C1T,EATW,CAiBhB0T,EAlB4C,GAVpB,CAqC5BK,aAAAA,GACE,OAAO3a,KAAKmO,WAAWwM,cAAc3a,KAAKkU,WAD5B,CAQhB0G,QAAAA,GACE5a,KAAKgN,WAAY,EAEjB,MAAM6N,EAAS,GACf,IAAK,MAAM9D,KAAe/W,KAAK2U,cAAcmG,SAO3C,GANA9a,KAAKqY,mBAAmB,CACtBtB,cACAhQ,OAAQ,IAAI9c,MAAM,uBAClB8wB,OAAO,KAGLhE,EAAYwC,qBAIhB,IAAK,MAAMrB,KAAsBnB,EAAYiB,YAC3C6C,EAAOzqB,KAAK8nB,EAAmB8C,WAC/B9C,EAAmB+C,SAOvB,OAJAjb,KAAKwU,KAAK0G,QACVpU,sBAAA6M,gBAAA3T,MAAuB,GACvB6W,kBAAAjD,oBAAA5T,KAAA8W,sBAAAzU,KAAArC,MAEO0G,QAAQne,IAAIsyB,EAxBV,CAkCX3H,OAAAA,GAA4B,IAApBiI,EAAA/vB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACN0b,sBAAA6M,gBAAA3T,MAAuB,GACvB,MAAMjY,EAAA8uB,kBAAAjD,oBAAU5T,KAAAmY,aAAA9V,KAAArC,MAAiC,GAKjD,OAHImb,GAAcpzB,GAChBiY,KAAKoU,SAALpU,KAAKoU,OAAW,IAAI9M,eAAA+M,WAEftsB,CAPmB,CAoD5BqzB,gBAAAA,CAAiBrC,EAAc/B,GAAU,IAAAqE,EAAAC,EACvC,MAAMvE,EAAc/W,KAAK2U,cAAchmB,IAAIqoB,GACtCD,IAGL,QAAAsE,EAAArb,KAAKoU,cAAL,IAAAiH,GAAAA,EAAa/C,QAAQ,gBAIrB,QAAAgD,EAAAvE,EAAYO,8BAAZ,IAAAgE,GAAAA,EAAoC3U,QAAQoS,GATL,CAezCwC,gBAAAA,CAAiBC,EAAmBzE,GAElC,IAAK,IAAI3pB,EAAI,EAAGa,EAAKutB,EAAkBnwB,OAAQ+B,EAAIa,EAAIb,IACrD2pB,EAAYQ,aAAaC,QAAQpnB,KAAKorB,EAAkBhE,QAAQpqB,IAChE2pB,EAAYQ,aAAaE,UAAUrnB,KAAKorB,EAAkB/D,UAAUrqB,IAEtE2pB,EAAYQ,aAAaG,UAAY8D,EAAkB9D,UACvDX,EAAYQ,aAAaI,eAAiB6D,EAAkB7D,eAG5D,IAAK,MAAMO,KAAsBnB,EAAYiB,YAC3CE,EAAmBgB,sBAGjBsC,EAAkB9D,WACpBb,kBAAAjD,oBAAA5T,KAAAmY,aAAA9V,KAAArC,MAAiC,EAfY,CAsBjD4X,iBAAAA,CAAA6D,GAIG,IAJe,gBAChB9F,EADgB,SAEhBqB,EAFgB,8BAGhB0E,GAHFD,EAWE,MAAM,IAAE7sB,EAAF,UAAO+sB,GAAcD,EAYrBvB,EAViBna,KAAKmO,WAAWJ,eAAe4L,eACpD,kBACA,CACE5F,UAAW/T,KAAKkU,WAChBsB,OAAQG,EACRqB,WACA3F,kBAAmBziB,GAErB+sB,GAE4BvB,YAExBrD,EAAc/W,KAAK2U,cAAchmB,IAAIqoB,GAC3CD,EAAY6E,aAAezB,EAE3B,MAAMG,EAAOA,KACXH,EAAOI,OAAOxN,MACZ8O,IAAqB,IAApB,MAAE5sB,EAAF,KAASwrB,GAAVoB,EACMpB,EACF1D,EAAY6E,aAAe,KAGzB5b,KAAKmO,WAAWnB,YAGpBhN,KAAKub,iBAAiBtsB,EAAO8nB,GAC7BuD,IAAA,IAEFvT,IAGE,GAFAgQ,EAAY6E,aAAe,MAEvB5b,KAAKmO,WAAWnB,UAApB,CAGA,GAAI+J,EAAYQ,aAAc,CAE5BR,EAAYQ,aAAaG,WAAY,EAErC,IAAK,MAAMQ,KAAsBnB,EAAYiB,YAC3CE,EAAmBgB,sBAErBrC,kBAAAjD,oBAAA5T,KAAAmY,aAAA9V,KAAArC,MAAiC,EAPL,CAU9B,GAAI+W,EAAYO,uBACdP,EAAYO,uBAAuB1Q,OAAOG,OACrC,KAAIgQ,EAAYwC,qBAGrB,MAAMxS,EAFNgQ,EAAYwC,qBAAqB3S,OAAOG,EACnC,CAjBwB,CAiBxB,GAhCX,EAsCFuT,GA/DC,CAqEHjC,kBAAAA,CAAAyD,GAA2D,IAAxC,YAAE/E,EAAF,OAAehQ,EAAf,MAAuBgU,GAAQ,GAAlDe,EAQE,GAAK/E,EAAY6E,aAAjB,CASA,GALI7E,EAAYG,4BACdC,aAAaJ,EAAYG,2BACzBH,EAAYG,0BAA4B,OAGrC6D,EAAO,CAGV,GAAIhE,EAAYiB,YAAY6B,KAAO,EACjC,OAKF,GAAI9S,aAAkBO,eAAAyU,4BAA6B,CACjD,IAAIC,EAAQ3T,4BAUZ,OATItB,EAAOkV,WAAa,GAAKlV,EAAOkV,WAAwB,MAE1DD,GAASjV,EAAOkV,iBAGlBlF,EAAYG,0BAA4BgF,YAAW,KACjDnF,EAAYG,0BAA4B,KACxClX,KAAKqY,mBAAmB,CAAEtB,cAAahQ,SAAQgU,OAAO,GAAtD,GACCiB,GAV8C,CATzC,CA8BZ,GAPAjF,EAAY6E,aACTX,OAAO,IAAI9T,MAAAhG,eAAe4F,EAAOrf,UACjC2mB,OAAM,SAGT0I,EAAY6E,aAAe,MAEvB5b,KAAKmO,WAAWnB,UAApB,CAKA,IAAK,MAAOmP,EAAaC,KAAmBpc,KAAK2U,cAC/C,GAAIyH,IAAmBrF,EAAa,CAClC/W,KAAK2U,cAAcsD,OAAOkE,GAC1B,KAFkC,CAMtCnc,KAAKkT,SAZ0B,CAvCA,CAR0B,CAkE3D,SAAImJ,GACF,OAAOrc,KAAKoU,MADF,EAnpBK,SAAA+D,cAgcY,IAAjBmE,EAAAlxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAGV,GAFAyrB,kBAAAjD,oBAAA5T,KAAA8W,sBAAAzU,KAAArC,OAEIiH,sBAAA0M,gBAAC3T,OAAwBA,KAAKgN,UAChC,OAAO,EAET,GAAIsP,EAMF,OALAxV,sBAAA4M,uBAAA1T,KAA8Bkc,YAAW,KACvCpV,sBAAA4M,uBAAA1T,KAA8B,MAC9B6W,kBAAAjD,oBAAA5T,KAAAmY,aAAA9V,KAAArC,MAAiC,EAAjC,GACCsI,2BAEI,EAET,IAAK,MAAM,YAAE0P,EAAF,aAAeT,KAAkBvX,KAAK2U,cAAcmG,SAC7D,GAAI9C,EAAY6B,KAAO,IAAMtC,EAAaG,UACxC,OAAO,EAMX,OAHA1X,KAAK2U,cAAcuG,QACnBlb,KAAKwU,KAAK0G,QACVpU,sBAAA6M,gBAAA3T,MAAuB,IAChB,CAtBoB,UAAA8W,uBA0B3B7P,sBAAAyM,uBAAI1T,QACFmX,aAAAlQ,sBAAAyM,uBAAa1T,OACb8G,sBAAA4M,uBAAA1T,KAA8B,MAHX,CAzuDzBha,QAAA8tB,aAAAA,aAAA,IAAAyI,WAAA,IAAAjW,QAAAkW,UAAA,IAAAlW,QAw6DA,MAAMmW,aAAaxc,WAAAA,GAAAuG,2BAAA,KAAA+V,WACJ,IAAI7D,KAAjBlS,2BAAA,KAAAgW,UAEY9V,QAAQC,UAApB,CAEA+V,WAAAA,CAAY7tB,EAAK8tB,GACf,MAAMC,EAAQ,CACZ/V,KAAMgW,gBACJhuB,EAGE8tB,EACE,CAAEA,YACF,OAIR1V,sBAAAuV,UAAAxc,MAAe+M,MAAK,KAClB,IAAK,MAAMgD,KAAX9I,sBAAAsV,WAAuBvc,MACrB+P,EAAS1N,KAAKrC,KAAM4c,EADkB,GAbjB,CAmB3B5zB,gBAAAA,CAAiBxC,EAAMupB,GACrB9I,sBAAAsV,WAAAvc,MAAgB2Y,IAAI5I,EADW,CAIjC+M,mBAAAA,CAAoBt2B,EAAMupB,GACxB9I,sBAAAsV,WAAAvc,MAAgBiY,OAAOlI,EADW,CAIpCgN,SAAAA,GACE9V,sBAAAsV,WAAAvc,MAAgBkb,OADN,EAx8Ddl1B,QAAAy2B,aAAAA,aAq9DA,MAAMO,cAAgB,CACpBC,kBAAkB,EAClBC,kBAAmB,KACnBC,aAAc,GAId,GA59DFn3B,QAAAg3B,cAAAA,cA49DM7V,MAAA5W,SAEFysB,cAAcC,kBAAmB,EAEjCD,cAAcE,kBAEV,uBACC,GAAwB,kBAAbl1B,SAAuB,KAAAo1B,UACvC,MAAMC,EAAgB,QAAhBD,UAAgBp1B,gBAAA,IAAAo1B,WAAA,QAAAA,UAAAA,UAAUE,qBAAV,IAAAF,eAAA,EAAAA,UAAyBhU,IAC3CiU,IACFL,cAAcE,kBAAoBG,EAAcx2B,QAC9C,4BACA,eALmC,CAWzCm2B,cAAcO,aAAe,SAAUpyB,EAASqyB,GAC9C,IAAIC,EACJ,IAEE,GADAA,EAAO,IAAI1xB,IAAIZ,IACVsyB,EAAKC,QAA0B,SAAhBD,EAAKC,OACvB,OAAO,CAHP,CAKF,MACA,OAAO,CADD,CAIR,MAAMC,EAAQ,IAAI5xB,IAAIyxB,EAAUC,GAChC,OAAOA,EAAKC,SAAWC,EAAMD,MAZ2B,EAe1DV,cAAcY,iBAAmB,SAAU1yB,GAIzC,MAAM2yB,EAAA,kBAAAlyB,OAA4BT,EAAI,OACtC,OAAOa,IAAI+xB,gBAAgB,IAAIC,KAAK,CAACF,IALS,EAiBlD,MAAMzT,UAGJnK,WAAAA,GAIQ,IAJI,KACVzZ,EAAO,KADG,KAEV6lB,EAAO,KAFG,UAGV5e,GAAY,EAAA0Z,MAAA6W,sBAHF5yB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAIR,CAAC,EAUH,GATA4U,KAAKxZ,KAAOA,EACZwZ,KAAKgN,WAAY,EACjBhN,KAAKvS,UAAYA,EAEjBuS,KAAK6P,iBAAmB,IAAI1I,MAAAZ,kBAC5BvG,KAAKie,MAAQ,KACbje,KAAKke,WAAa,KAClBle,KAAKme,gBAAkB,KAIrB9R,EACA,KAAA+R,EACA,WAAAA,EAAAC,aAAA9vB,SAAA,IAAA6vB,GAAIA,EAAwBE,IAAIjS,GAC9B,MAAM,IAAIpiB,MAAM,gDAIlB,OAFCo0B,aAAA9vB,IAAA8vB,aAAA9vB,EAA2B,IAAI+X,UAAW2Q,IAAI5K,EAAMrM,WACrDA,KAAKue,oBAAoBlS,EALzB,CAQFrM,KAAKwe,aArBC,CA4BR,WAAI/X,GACF,OAAOzG,KAAK6P,iBAAiBpJ,OADjB,CAQd,QAAI4F,GACF,OAAOrM,KAAKie,KADH,CAQX,kBAAIlQ,GACF,OAAO/N,KAAKme,eADO,CAIrBI,mBAAAA,CAAoBlS,GAIlBrM,KAAKie,MAAQ5R,EACbrM,KAAKme,gBAAkB,IAAIxW,iBAAAqG,eAAe,OAAQ,SAAU3B,GAC5DrM,KAAKme,gBAAgBM,GAAG,SAAS,WAAa,IAI9Cze,KAAK6P,iBAAiBlJ,UAEtB3G,KAAKme,gBAAgB/P,KAAK,YAAa,CACrC3gB,UAAWuS,KAAKvS,WAbM,CAiB1B+wB,WAAAA,GAME,IACGxB,cAAcC,mBACd7S,UAAUsU,gCACX,CACA,IAAI,UAAEC,GAAcvU,UAEpB,IAMK4S,cAAcO,aAAa/zB,OAAOolB,SAASD,KAAMgQ,KAElDA,EAAY3B,cAAcY,iBACxB,IAAI7xB,IAAI4yB,EAAWn1B,OAAOolB,UAAUD,OAIxC,MAAMxE,EAIA,IAAIyU,OAAOD,GACX5Q,EAAiB,IAAIpG,iBAAAqG,eAAe,OAAQ,SAAU7D,GACtD0U,EAAiBA,KACrB1U,EAAO2S,oBAAoB,QAASgC,GACpC/Q,EAAeqB,UACfjF,EAAO4S,YACH/c,KAAKgN,UACPhN,KAAK6P,iBAAiBjJ,OAAO,IAAI3c,MAAM,yBAIvC+V,KAAK+e,kBAHA,EAOHD,EAAgBA,KACf9e,KAAKke,YAGRW,GAHoB,EAMxB1U,EAAOnhB,iBAAiB,QAAS81B,GAEjC/Q,EAAe0Q,GAAG,QAAQ5X,IACxBsD,EAAO2S,oBAAoB,QAASgC,GAChC9e,KAAKgN,UACP6R,IAGEhY,GACF7G,KAAKme,gBAAkBpQ,EACvB/N,KAAKie,MAAQ9T,EACbnK,KAAKke,WAAa/T,EAElBnK,KAAK6P,iBAAiBlJ,UAEtBoH,EAAeK,KAAK,YAAa,CAC/B3gB,UAAWuS,KAAKvS,cAGlBuS,KAAK+e,mBACLhR,EAAeqB,UACfjF,EAAO4S,YAHF,IAOThP,EAAe0Q,GAAG,SAAS5X,IAEzB,GADAsD,EAAO2S,oBAAoB,QAASgC,GAChC9e,KAAKgN,UACP6R,SAGF,IACEG,GADE,CAEF,MAEAhf,KAAK+e,kBAFC,KAMV,MAAMC,EAAWA,KACf,MAAMC,EAAU,IAAI/xB,WAEpB6gB,EAAeK,KAAK,OAAQ6Q,EAAS,CAACA,EAAQrvB,QAA9C,EAOF,YADAovB,GAvFE,CAyFF,OACA,EAAA7X,MAAA+X,MAAK,gCADC,CA5FR,CAkGFlf,KAAK+e,kBA3GO,CA8GdA,gBAAAA,GACO/B,cAAcC,oBACjB,EAAA9V,MAAA5d,MAAK,2BACLyzB,cAAcC,kBAAmB,GAGnC7S,UAAU+U,uBACPpS,MAAKqS,IACJ,GAAIpf,KAAKgN,UAEP,YADAhN,KAAK6P,iBAAiBjJ,OAAO,IAAI3c,MAAM,yBAGzC,MAAMoiB,EAAO,IAAIoQ,aACjBzc,KAAKie,MAAQ5R,EAGb,MAAM4F,EAAA,OAAAtmB,OAAYqxB,cAAcG,gBAI1BkC,EAAgB,IAAI1X,iBAAAqG,eAAeiE,EAAK,UAAWA,EAAI5F,GAC7D+S,EAAqBE,MAAMD,EAAehT,GAE1C,MAAM0B,EAAiB,IAAIpG,iBAAAqG,eAAeiE,EAAIA,EAAK,UAAW5F,GAC9DrM,KAAKme,gBAAkBpQ,EACvB/N,KAAK6P,iBAAiBlJ,UAEtBoH,EAAeK,KAAK,YAAa,CAC/B3gB,UAAWuS,KAAKvS,WADlB,IAID4gB,OAAMtH,IACL/G,KAAK6P,iBAAiBjJ,OACpB,IAAI3c,MAAJ,mCAAA0B,OAA6Cob,EAAOrf,QAAQ,OAD9D,GAhCa,CAyCnB0nB,OAAAA,GAAU,IAAAmQ,EACRvf,KAAKgN,WAAY,EACbhN,KAAKke,aAEPle,KAAKke,WAAWnB,YAChB/c,KAAKke,WAAa,MAEpB,QAAAqB,EAAAlB,aAAA9vB,SAAA,IAAAgxB,GAAAA,EAAwBtH,OAAOjY,KAAKie,OACpCje,KAAKie,MAAQ,KACTje,KAAKme,kBACPne,KAAKme,gBAAgB/O,UACrBpP,KAAKme,gBAAkB,KAXjB,CAkBV,eAAO3R,CAASa,GAAQ,IAAAmS,EAItB,GAAK,OAAAnS,QAAA,IAAAA,IAAAA,EAAQhB,KACX,MAAM,IAAIpiB,MAAM,kDAElB,MAAMw1B,EAAa,QAAbD,EAAA3I,kBAxPJzM,UAwPiBpK,KAAAqe,cAAA9vB,SAAA,IAAAixB,OAAA,EAAAA,EAAmB7wB,IAAI0e,EAAOhB,MACjD,GAAIoT,EAAY,CACd,GAAIA,EAAWlQ,gBACb,MAAM,IAAItlB,MACR,2HAIJ,OAAOw1B,CAPO,CAShB,OAAO,IAAIrV,UAAUiD,EAjBC,CAwBxB,oBAAWsR,GACT,GAAIjX,gBAAA4E,oBAAoBqS,UACtB,OAAOjX,gBAAA4E,oBAAoBqS,UAE7B,GAEsC,OAApC3B,cAAcE,kBAKd,OAHK/V,MAAA5W,WACH,EAAA+W,eAAA2J,YAAW,iDAEN+L,cAAcE,kBAEvB,MAAM,IAAIjzB,MAAM,gDAbK,CAgBvB,0CAAWy0B,GACT,IAAI,IAAAgB,EACF,OAAO,QAAAA,EAAA50B,WAAW60B,mBAAX,IAAAD,OAAA,EAAAA,EAAwBN,uBAAwB,IADrD,CAEF,MACA,OAAO,IADD,CAHmC,CAS7C,iCAAWD,GACT,MAAMS,OAASrR,UACb,MAAMsR,yBAA2B7f,KAAK0e,gCAEtC,GAAImB,yBAEF,OAAOA,yBAMT,GAEE1Y,MAAA5W,SAGA,CAcA,MAAM4Z,OAAS2V,KAAK,UAALA,CAAgB9f,KAAK2e,WACpC,OAAOxU,OAAOiV,oBAfd,CAkBF,aADM,EAAA9X,eAAAyY,YAAW/f,KAAK2e,WACfn1B,OAAOm2B,YAAYP,oBAA1B,EAGF,OAAO,EAAAjY,MAAA3H,QAAOQ,KAAM,yBAA0B4f,SAtCZ,EAlStB,IAAAvB,aAAA,CAAA9vB,OAAA,GA9gEhBvI,QAAAokB,UAAAA,UAAA,IAAA4V,gBAAA,IAAA1Z,QAAA2Z,WAAA,IAAA3Z,QAAA4Z,cAAA,IAAA5Z,QAAA6Z,oBAAA,IAAA7Z,QAAA8Z,uBAAA,IAAAvM,QA81EA,MAAM3F,gBASJjO,WAAAA,CAAY8N,EAAgBsF,EAAajG,EAAeC,EAAQxiB,GAASopB,4BAAA,KAAAmM,wBAAA5Z,2BAAA,KAAAwZ,gBARvD,IAAI3xB,KAAtBmY,2BAAA,KAAAyZ,WAEa,IAAI5xB,KAAjBmY,2BAAA,KAAA0Z,cAEgB,IAAI7xB,KAApBmY,2BAAA,KAAA2Z,oBAEsB,MAGpBngB,KAAK+N,eAAiBA,EACtB/N,KAAKqT,YAAcA,EACnBrT,KAAKuU,WAAa,IAAIE,WACtBzU,KAAKqgB,WAAa,IAAI9Y,aAAA+Y,WAAW,CAC/BnV,cAAekC,EAAOlC,cACtB2B,aAAcO,EAAOP,eAEvB9M,KAAKugB,QAAUlT,EAEfrN,KAAK6L,cAAgBhhB,EAAQghB,cAC7B7L,KAAK8L,cAAgBjhB,EAAQihB,cAC7B9L,KAAKiM,kBAAoBphB,EAAQohB,kBACjCjM,KAAKmM,wBAA0BthB,EAAQshB,wBAEvCnM,KAAKgN,WAAY,EACjBhN,KAAKwgB,kBAAoB,KAEzBxgB,KAAKygB,eAAiBrT,EACtBpN,KAAK0gB,YAAc,KACnB1gB,KAAK2gB,cAAgB,KACrB3gB,KAAKiT,uBAAyB,IAAI9L,MAAAZ,kBAElCvG,KAAK4gB,qBAvBkE,CA0DzE,qBAAIvP,GACF,OAAO,EAAAlK,MAAA3H,QAAOQ,KAAM,oBAAqB,IAAIqH,oBAAAwZ,kBADvB,CAIxBnL,kBAAAA,CACEF,GAIA,IAHAc,EAAAlrB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB+b,MAAAxV,eAAeE,OAChC8kB,EAAAvrB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,KACzB01B,EAAA11B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAEIuqB,EAAkBxO,MAAAjW,oBAAoBE,QACtCsqB,EAAgCrU,oBAAA0Z,kBAEpC,OAAQvL,GACN,IAAK,MACHG,EAAkBxO,MAAAjW,oBAAoBC,IACtC,MACF,IAAK,UACH,MACF,IAAK,QACHwkB,EAAkBxO,MAAAjW,oBAAoBG,MACtC,MACF,SACE,EAAA8V,MAAA5d,MAAA,wCAAAoC,OAA6C6pB,IAGjD,OAAQc,GACN,KAAKnP,MAAAxV,eAAeC,QAClB+jB,GAAmBxO,MAAAjW,oBAAoBO,oBACvC,MACF,KAAK0V,MAAAxV,eAAeE,OAClB,MACF,KAAKsV,MAAAxV,eAAeG,aAClB6jB,GAAmBxO,MAAAjW,oBAAoBK,kBACvC,MACF,KAAK4V,MAAAxV,eAAeI,eAClB4jB,GAAmBxO,MAAAjW,oBAAoBM,oBAQvCkqB,GALE/F,EAAkBxO,MAAAjW,oBAAoBG,OACtCslB,aAAkCtP,oBAAA2Z,uBAC9BrK,EACA3W,KAAKqR,mBAEuC4P,aAClD,MACF,SACE,EAAA9Z,MAAA5d,MAAA,gDAAAoC,OAAqD2qB,IAOzD,OAJIwK,IACFnL,GAAmBxO,MAAAjW,oBAAoBQ,QAGlC,CACLikB,kBACAqB,SAAA,GAAArrB,OAAagqB,EAAgB,KAAAhqB,OAAG+vB,EAA8BwF,MAC9DxF,gCAhDF,CAoDFtM,OAAAA,GAAU,IAAA+R,EACR,GAAInhB,KAAKwgB,kBACP,OAAOxgB,KAAKwgB,kBAAkB/Z,QAGhCzG,KAAKgN,WAAY,EACjBhN,KAAKwgB,kBAAoB,IAAIrZ,MAAAZ,kBAE7B,QAAA4a,EAAAla,sBAAAkZ,oBAAAngB,aAAA,IAAAmhB,GAAAA,EAA0Bva,OACxB,IAAI3c,MAAM,oDAGZ,MAAM4wB,EAAS,GAGf,IAAK,MAAMuG,KAAQna,sBAAAgZ,WAAAjgB,MAAgB8a,SACjCD,EAAOzqB,KAAKgxB,EAAKxG,YAEnB3T,sBAAAgZ,WAAAjgB,MAAgBkb,QAChBjU,sBAAAiZ,cAAAlgB,MAAmBkb,QAEflb,KAAKqhB,eAAe,sBACtBrhB,KAAKqR,kBAAkBiQ,gBAGzB,MAAMC,EAAavhB,KAAK+N,eAAeU,gBAAgB,YAAa,MAmBpE,OAlBAoM,EAAOzqB,KAAKmxB,GAEZ7a,QAAQne,IAAIsyB,GAAQ9N,MAAK,KAAM,IAAAyU,EAC7BxhB,KAAKuU,WAAW2G,QAChBlb,KAAKqgB,WAAWnF,QAChBjU,sBAAA+Y,gBAAAhgB,MAAqBkb,QACrBlb,KAAK8L,cAAcsD,UAEnB,QAAAoS,EAAAxhB,KAAKygB,sBAAL,IAAAe,GAAAA,EAAqBC,kBACnB,IAAIta,MAAAhG,eAAe,2BAGjBnB,KAAK+N,iBACP/N,KAAK+N,eAAeqB,UACpBpP,KAAK+N,eAAiB,MAExB/N,KAAKwgB,kBAAkB7Z,SAAvB,GACC3G,KAAKwgB,kBAAkB5Z,QACnB5G,KAAKwgB,kBAAkB/Z,OA5CtB,CA+CVma,mBAAAA,GACE,MAAM,eAAE7S,EAAF,YAAkBsF,GAAgBrT,KAExC+N,EAAe0Q,GAAG,aAAa,CAAC5X,EAAM6a,MACpC,EAAAva,MAAAwa,QACE3hB,KAAKygB,eACL,mDAEFzgB,KAAK0gB,YAAc1gB,KAAKygB,eAAemB,gBACvC5hB,KAAK0gB,YAAYvR,WAAa0S,IAC5B7hB,KAAK2gB,cAAgB,CACnBrQ,OAAQuR,EAAIvR,OACZC,MAAOsR,EAAItR,MAFb,EAKFmR,EAAKI,OAAS,KACZ9hB,KAAK0gB,YACFnG,OACAxN,MAAK,SAAAgV,GAA2B,IAAjB,MAAE9yB,EAAF,KAASwrB,GAAnBsH,EACAtH,EACFiH,EAAKM,UAGP,EAAA7a,MAAAwa,QACE1yB,aAAiBgzB,YACjB,wCAIFP,EAAKQ,QAAQ,IAAIh1B,WAAW+B,GAAQ,EAAG,CAACA,IAXT,IAahCof,OAAMtH,IACL2a,EAAKv3B,MAAM4c,EAAX,GAhBJ,EAoBF2a,EAAKS,SAAWpb,IACd/G,KAAK0gB,YAAYzF,OAAOlU,GAExB2a,EAAKU,MAAM/T,OAAMgU,IACf,IAAIriB,KAAKgN,UAGT,MAAMqV,CAAN,GAJF,CAHF,IAYFtU,EAAe0Q,GAAG,sBAAsB5X,IACtC,MAAMyb,EAAoB,IAAInb,MAAAZ,kBACxBgc,EAAaviB,KAAK0gB,YAuBxB,OAtBA6B,EAAWC,aAAazV,MAAK,KAID,IAAA0V,EADrBF,EAAWG,sBAAyBH,EAAWI,mBAC9C3iB,KAAK2gB,gBACP,QAAA8B,EAAApP,EAAYlE,kBAAZ,IAAAsT,GAAAA,EAAApgB,KAAAgR,EAAyBrT,KAAK2gB,gBAEhC4B,EAAWpT,WAAa0S,IAAO,IAAAe,EAC7B,QAAAA,EAAAvP,EAAYlE,kBAAZ,IAAAyT,GAAAA,EAAAvgB,KAAAgR,EAAyB,CACvB/C,OAAQuR,EAAIvR,OACZC,MAAOsR,EAAItR,OAFb,GAOJ+R,EAAkB3b,QAAQ,CACxB+b,qBAAsBH,EAAWG,qBACjCC,iBAAkBJ,EAAWI,iBAC7BE,cAAeN,EAAWM,eAH5B,GAKCP,EAAkB1b,QAEd0b,EAAkB7b,OAAzB,IAGFsH,EAAe0Q,GAAG,kBAAkB,CAAC5X,EAAM6a,MACzC,EAAAva,MAAAwa,QACE3hB,KAAKygB,eACL,wDAEF,MAAMqC,EAAc9iB,KAAKygB,eAAesC,eACtClc,EAAKuJ,MACLvJ,EAAK+J,KAaFkS,GAKLpB,EAAKI,OAAS,KACZgB,EACGvI,OACAxN,MAAK,SAAAiW,GAA2B,IAAjB,MAAE/zB,EAAF,KAASwrB,GAAnBuI,EACAvI,EACFiH,EAAKM,UAGP,EAAA7a,MAAAwa,QACE1yB,aAAiBgzB,YACjB,6CAEFP,EAAKQ,QAAQ,IAAIh1B,WAAW+B,GAAQ,EAAG,CAACA,IATT,IAWhCof,OAAMtH,IACL2a,EAAKv3B,MAAM4c,EAAX,GAdJ,EAkBF2a,EAAKS,SAAWpb,IACd+b,EAAY7H,OAAOlU,GAEnB2a,EAAKU,MAAM/T,OAAMgU,IACf,IAAIriB,KAAKgN,UAGT,MAAMqV,CAAN,GAJF,GA1BAX,EAAKM,OAuBP,IAYFjU,EAAe0Q,GAAG,UAAUwE,IAAiB,IAAhB,QAAElS,GAAHkS,EAC1BjjB,KAAKkjB,UAAYnS,EAAQO,SACzBtR,KAAKyR,YAAcV,EAAQoS,kBACpBpS,EAAQoS,WACf9P,EAAY/E,YAAY3H,QAAQ,IAAImK,iBAAiBC,EAAS/Q,MAA9D,IAGF+N,EAAe0Q,GAAG,gBAAgB,SAAU1uB,GAC1C,IAAIgX,EACJ,OAAQhX,EAAGvJ,MACT,IAAK,oBACHugB,EAAS,IAAII,MAAAzG,kBAAkB3Q,EAAGrI,QAASqI,EAAGE,MAC9C,MACF,IAAK,sBACH8W,EAAS,IAAII,MAAArG,oBAAoB/Q,EAAGrI,SACpC,MACF,IAAK,sBACHqf,EAAS,IAAII,MAAApG,oBAAoBhR,EAAGrI,SACpC,MACF,IAAK,8BACHqf,EAAS,IAAII,MAAAnG,4BAA4BjR,EAAGrI,QAASqI,EAAGkR,QACxD,MACF,IAAK,wBACH8F,EAAS,IAAII,MAAAvG,sBAAsB7Q,EAAGrI,QAASqI,EAAG8Q,SAClD,MACF,SACE,EAAAsG,MAAAlc,aAAY,0CAEhBooB,EAAY/E,YAAY1H,OAAOG,EArBe,IAwBhDgH,EAAe0Q,GAAG,mBAAmB2E,IAGnC,GAFAtc,sBAAAqZ,oBAAAngB,KAA2B,IAAImH,MAAAZ,mBAE3B8M,EAAYnE,WAAY,CAC1B,MAAMmU,EAAiBtZ,IACjBA,aAAoB9f,MACtBgd,sBAAAkZ,oBAAAngB,MAAyB4G,OAAOmD,GAEhC9C,sBAAAkZ,oBAAAngB,MAAyB2G,QAAQ,CAAEoD,YAD9B,EAIT,IACEsJ,EAAYnE,WAAWmU,EAAgBD,EAAUnzB,KAD/C,CAEF,MAAOF,GACPkX,sBAAAkZ,oBAAAngB,MAAyB4G,OAAO7W,EADrB,CAVa,MAc1BkX,sBAAAkZ,oBAAAngB,MAAyB4G,OACvB,IAAIO,MAAAzG,kBAAkB0iB,EAAU17B,QAAS07B,EAAUnzB,OAGvD,OAAOgX,sBAAAkZ,oBAAAngB,MAAyByG,OAAhC,IAGFsH,EAAe0Q,GAAG,cAAc5X,IAAQ,IAAAyc,EAGtC,QAAAA,EAAAjQ,EAAYlE,kBAAZ,IAAAmU,GAAAA,EAAAjhB,KAAAgR,EAAyB,CACvB/C,OAAQzJ,EAAKxb,OACbklB,MAAO1J,EAAKxb,SAGd2U,KAAKiT,uBAAuBtM,QAAQE,EAApC,IAGFkH,EAAe0Q,GAAG,mBAAmB5X,IAC/B7G,KAAKgN,WAII/F,sBAAAgZ,WAAAjgB,MAAgBrR,IAAIkY,EAAKkN,WACjCqH,iBAAiBvU,EAAKkS,aAAclS,EAAKmQ,SAA9C,IAGFjJ,EAAe0Q,GAAG,aAAa8E,IAA8B,IAAAC,EAAA,IAA5BvR,EAAIvrB,EAAM+8B,GAAZF,EAC7B,IAAIvjB,KAAKgN,YAILhN,KAAKuU,WAAW+J,IAAIrM,GAIxB,OAAQvrB,GACN,IAAK,OACH,MAAM2mB,EAASrN,KAAKugB,QAEpB,GAAI,UAAWkD,EAAc,CAC3B,MAAMC,EAAgBD,EAAat5B,OACnC,EAAAgd,MAAA5d,MAAA,8BAAAoC,OAAmC+3B,IACnC1jB,KAAKuU,WAAW5N,QAAQsL,EAAIyR,GAC5B,KAJ2B,CAO7B,MAAMC,EACJtW,EAAO9B,QAAU,QAAjBiY,EAAiB14B,WAAW84B,qBAAX,IAAAJ,GAAAA,EAA0BK,QACvC,CAACC,EAAM54B,IAAQJ,WAAW84B,cAAcG,UAAUD,EAAM54B,GACxD,KACA44B,EAAO,IAAIvc,aAAAyc,eAAeP,EAAc,CAC5CjiB,gBAAiB6L,EAAO7L,gBACxBwJ,gBAAiBqC,EAAOrC,gBACxBJ,aAAcyC,EAAOzC,aACrB+Y,gBAGF3jB,KAAKqgB,WACF4D,KAAKH,GACLzV,OAAMtH,GACEgH,EAAeU,gBAAgB,eAAgB,CAAEwD,SAEzDiS,SAAQ,MACF7W,EAAOpC,qBAAuB6Y,EAAKjd,OAMtCid,EAAKjd,KAAO,MAEd7G,KAAKuU,WAAW5N,QAAQsL,EAAI6R,EAA5B,IAEJ,MACF,IAAK,WACL,IAAK,QACL,IAAK,UACH9jB,KAAKuU,WAAW5N,QAAQsL,EAAIwR,GAC5B,MACF,QACE,MAAM,IAAIx5B,MAAJ,kCAAA0B,OAA4CjF,IA7CtD,IAiDFqnB,EAAe0Q,GAAG,OAAO0F,IAAsC,IAApClS,EAAI8B,EAAWrtB,EAAM09B,GAAvBD,EACvB,GAAInkB,KAAKgN,UAEP,OAGF,MAAMqX,EAAYpd,sBAAAgZ,WAAAjgB,MAAgBrR,IAAIolB,GACtC,IAAIsQ,EAAU7P,KAAK8J,IAAIrM,GAIvB,OAAQvrB,GACN,IAAK,QAIH,GAHA29B,EAAU7P,KAAK7N,QAAQsL,EAAImS,GAGvBA,EAAW,CACb,IAAI/4B,EACJ,GAAI+4B,EAAUE,OAAQ,CACpB,MAAM,MAAEC,EAAF,OAASC,GAAWJ,EAC1B/4B,EAASk5B,EAAQC,EAAS,CAFN,KAGf,KAAAC,EACLp5B,GAAS,QAAAo5B,EAAAL,EAAUvd,YAAV,IAAA4d,OAAA,EAAAA,EAAgBp5B,SAAU,CAD9B,CAIHA,EAAS8b,MAAArW,0BACXuzB,EAAU3P,0BAA2B,EAV1B,CAaf,MACF,IAAK,UACH2P,EAAU7P,KAAK7N,QAAQsL,EAAImS,GAC3B,MACF,QACE,MAAM,IAAIn6B,MAAJ,2BAAA0B,OAAqCjF,IAvB/C,IA2BFqnB,EAAe0Q,GAAG,eAAe5X,IAAQ,IAAA6d,EACnC1kB,KAAKgN,WAGT,QAAA0X,EAAArR,EAAYlE,kBAAZ,IAAAuV,GAAAA,EAAAriB,KAAAgR,EAAyB,CACvB/C,OAAQzJ,EAAKyJ,OACbC,MAAO1J,EAAK0J,OAFd,IAMFxC,EAAe0Q,GAAG,oBAAoB5X,GAChC7G,KAAKgN,UACAtG,QAAQE,OAAO,IAAI3c,MAAM,0BAE7B+V,KAAKiM,kBAOHjM,KAAKiM,kBAAkB0Y,MAAM9d,GAN3BH,QAAQE,OACb,IAAI3c,MACF,6EAOR8jB,EAAe0Q,GAAG,yBAAyB5X,GACrC7G,KAAKgN,UACAtG,QAAQE,OAAO,IAAI3c,MAAM,0BAE7B+V,KAAKmM,wBAOHnM,KAAKmM,wBAAwBwY,MAAM9d,GANjCH,QAAQE,OACb,IAAI3c,MACF,kFA9UY,CAsVtB6oB,OAAAA,GACE,OAAO9S,KAAK+N,eAAeU,gBAAgB,UAAW,KAD9C,CAIVsE,YAAAA,GAAe,IAAA6R,EAAAC,EACT7kB,KAAKqR,kBAAkBwI,MAAQ,IACjC,EAAA1S,MAAA5d,MACE,kGAIJ,MAAM,IAAEqF,EAAF,UAAO+sB,GAAc3b,KAAKqR,kBAAkB4P,aAElD,OAAOjhB,KAAK+N,eACTU,gBACC,eACA,CACE+C,YAAaxR,KAAKyR,YAClBH,SAAUtR,KAAKkjB,UACf7R,kBAAmBziB,EACnBk2B,SAAU,QAAVF,EAAU,QAAVC,EAAU7kB,KAAK0gB,mBAAL,IAAAmE,OAAA,EAAAA,EAAkBC,gBAAlB,IAAAF,EAAAA,EAA8B,MAE1CjJ,GAEDuI,SAAQ,KACPlkB,KAAKqR,kBAAkBiQ,eAAvB,GArBS,CAyBf3P,OAAAA,CAAQC,GACN,IACGxiB,OAAOC,UAAUuiB,IAClBA,GAAc,GACdA,EAAa5R,KAAKkjB,UAElB,OAAOxc,QAAQE,OAAO,IAAI3c,MAAM,0BAGlC,MAAM8pB,EAAYnC,EAAa,EAC7BmT,EAAgB9d,sBAAAiZ,cAAAlgB,MAAmBrR,IAAIolB,GACzC,GAAIgR,EACF,OAAOA,EAET,MAAMte,EAAUzG,KAAK+N,eAClBU,gBAAgB,UAAW,CAC1BsF,cAEDhH,MAAKiH,IACJ,GAAIhU,KAAKgN,UACP,MAAM,IAAI/iB,MAAM,uBAElB,MAAMm3B,EAAO,IAAItN,aACfC,EACAC,EACAhU,KACAA,KAAKugB,QAAQhV,QAGf,OADAtE,sBAAAgZ,WAAAjgB,MAAgBiX,IAAIlD,EAAWqN,GACxBA,CAAP,IAGJ,OADAna,sBAAAiZ,cAAAlgB,MAAmBiX,IAAIlD,EAAWtN,GAC3BA,CAhCW,CAmCpBoL,YAAAA,CAAaC,GACX,MACiB,kBAARA,GACC,OAARA,IACC1iB,OAAOC,UAAUyiB,EAAIkT,MACtBlT,EAAIkT,IAAM,IACT51B,OAAOC,UAAUyiB,EAAImT,MACtBnT,EAAImT,IAAM,EAEHve,QAAQE,OAAO,IAAI3c,MAAM,+BAE3B+V,KAAK+N,eAAeU,gBAAgB,eAAgB,CACzDuW,IAAKlT,EAAIkT,IACTC,IAAKnT,EAAImT,KAbK,CAiBlB1P,cAAAA,CAAexB,EAAWyB,GACxB,OAAOxV,KAAK+N,eAAeU,gBAAgB,iBAAkB,CAC3DsF,YACAyB,UAH8B,CAOlCjC,eAAAA,GACE,OAAAsD,kBAAAuJ,uBAAOpgB,KAAAklB,oBAAA7iB,KAAArC,KAAwB,kBADf,CAIlBwT,YAAAA,GACE,OAAAqD,kBAAAuJ,uBAAOpgB,KAAAklB,oBAAA7iB,KAAArC,KAAwB,eADlB,CAIfyT,sBAAAA,GACE,OAAOzT,KAAK+N,eAAeU,gBAAgB,yBAA0B,KAD9C,CAIzBsD,eAAAA,GACE,OAAO/R,KAAK+N,eAAeU,gBAAgB,kBAAmB,KAD9C,CAIlBuD,cAAAA,CAAeC,GACb,MAAkB,kBAAPA,EACFvL,QAAQE,OAAO,IAAI3c,MAAM,iCAE3B+V,KAAK+N,eAAeU,gBAAgB,iBAAkB,CAC3DwD,MALe,CASnBC,aAAAA,GACE,OAAOlS,KAAK+N,eAAeU,gBAAgB,gBAAiB,KAD9C,CAIhB0D,aAAAA,GACE,OAAOnS,KAAK+N,eAAeU,gBAAgB,gBAAiB,KAD9C,CAIhB2D,WAAAA,GACE,OAAOpS,KAAK+N,eAAeU,gBAAgB,cAAe,KAD9C,CAId4D,oBAAAA,GACE,OAAOrS,KAAK+N,eAAeU,gBAAgB,uBAAwB,KAD9C,CAIvB6D,aAAAA,GACE,OAAOtS,KAAK+N,eAAeU,gBAAgB,gBAAiB,KAD9C,CAIhB8D,cAAAA,GACE,OAAOvS,KAAK+N,eAAeU,gBAAgB,iBAAkB,KAD9C,CAIjB+D,eAAAA,GACE,OAAAqE,kBAAAuJ,uBAAOpgB,KAAAklB,oBAAA7iB,KAAArC,KAAwB,kBADf,CAIlB4V,gBAAAA,CAAiB7B,GACf,OAAO/T,KAAK+N,eAAeU,gBAAgB,mBAAoB,CAC7DsF,aAFwB,CAM5B4G,aAAAA,CAAc5G,GACZ,OAAO/T,KAAK+N,eAAeU,gBAAgB,gBAAiB,CAC1DsF,aAFqB,CAMzBtB,UAAAA,GACE,OAAOzS,KAAK+N,eAAeU,gBAAgB,aAAc,KAD9C,CAIbiE,wBAAAA,GACE,OAAO1S,KAAK+N,eACTU,gBAAgB,2BAA4B,MAC5C1B,MAAKoY,GACG,IAAItd,yBAAAud,sBAAsBD,IAJZ,CAQ3BxS,cAAAA,GACE,OAAO3S,KAAK+N,eAAeU,gBAAgB,iBAAkB,KAD9C,CAIjBmE,WAAAA,GACE,MAAMpsB,EAAO,cACXu+B,EAAgB9d,sBAAA+Y,gBAAAhgB,MAAqBrR,IAAInI,GAC3C,GAAIu+B,EACF,OAAOA,EAET,MAAMte,EAAUzG,KAAK+N,eAClBU,gBAAgBjoB,EAAM,MACtBumB,MAAKoY,IAAW,IAAAE,EAAAC,EAAAC,EAAAC,EACf,MAAO,CACLtG,KAAMiG,EAAQ,GACdM,SAAUN,EAAQ,GAAK,IAAIvd,UAAA8d,SAASP,EAAQ,IAAM,KAClD1X,2BAA4B,QAA5B4X,EAA4B,QAA5BC,EAA4BtlB,KAAK0gB,mBAAL,IAAA4E,OAAA,EAAAA,EAAkBR,gBAAlB,IAAAO,EAAAA,EAA8B,KAC1DxC,cAAe,QAAf0C,EAAe,QAAfC,EAAexlB,KAAK0gB,mBAAL,IAAA8E,OAAA,EAAAA,EAAkB3C,qBAAlB,IAAA0C,EAAAA,EAAmC,KAJpD,IAQJ,OADAte,sBAAA+Y,gBAAAhgB,MAAqBiX,IAAIzwB,EAAMigB,GACxBA,CAjBK,CAoBdoM,WAAAA,GACE,OAAO7S,KAAK+N,eAAeU,gBAAgB,cAAe,KAD9C,CAId,kBAAM2E,GAAsC,IAAzBD,EAAA/nB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACjB,IAAI4U,KAAKgN,UAAT,OAGMhN,KAAK+N,eAAeU,gBAAgB,UAAW,MAErD,IAAK,MAAM2S,KAAQna,sBAAAgZ,WAAAjgB,MAAgB8a,SAGjC,IAF0BsG,EAAKlO,UAG7B,MAAM,IAAIjpB,MAAJ,sBAAA0B,OACkBy1B,EAAKxP,WAAW,6BAI5C5R,KAAKuU,WAAW2G,QACX/H,GACHnT,KAAKqgB,WAAWnF,QAElBjU,sBAAA+Y,gBAAAhgB,MAAqBkb,QACrBlb,KAAK8L,cAAcsD,SAAwB,EAnBvB,CADsB,CAuB5C,iBAAIkE,GACF,MAAM,iBAAEhI,EAAF,UAAoBJ,GAAclL,KAAKugB,QAC7C,OAAO,EAAApZ,MAAA3H,QAAOQ,KAAM,gBAAiB,CACnCsL,mBACAJ,aAJgB,EA7tBA,SAAAga,mBAwDD1+B,GAAmB,IAAbqgB,EAAAzb,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAO,KAC9B,MAAM25B,EAAgB9d,sBAAA+Y,gBAAAhgB,MAAqBrR,IAAInI,GAC/C,GAAIu+B,EACF,OAAOA,EAET,MAAMte,EAAUzG,KAAK+N,eAAeU,gBAAgBjoB,EAAMqgB,GAG1D,OADAI,sBAAA+Y,gBAAAhgB,MAAqBiX,IAAIzwB,EAAMigB,GACxBA,CAR6B,KAAAkf,MAAA,IAAArf,QAAAsf,kBAAA,IAAA/R,QAmrBxC,MAAMY,WAAWxU,WAAAA,GAAAgU,4BAAA,KAAA2R,mBAAApf,2BAAA,KAAAmf,MACP72B,OAAOC,OAAO,MAAtB,CA2BAJ,GAAAA,CAAIk3B,GAAwB,IAAjBrN,EAAAptB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAW,KAGpB,GAAIotB,EAAU,CACZ,MAAM3pB,EAAAgoB,kBAAA+O,kBAAM5lB,KAAA8lB,YAAAzjB,KAAArC,KAAgB6lB,GAE5B,OADAh3B,EAAIupB,WAAW3R,QAAQsG,MAAK,IAAMyL,EAAS3pB,EAAIgY,QACxC,IAHK,CAOd,MAAMhY,EAAMoY,sBAAA0e,MAAA3lB,MAAW6lB,GAGvB,GAAK,OAAAh3B,QAAA,IAAAA,IAAAA,EAAKupB,WAAWpR,QACnB,MAAM,IAAI/c,MAAJ,6CAAA0B,OAAuDk6B,EAAM,MAErE,OAAOh3B,EAAIgY,IAhBe,CAuB5ByX,GAAAA,CAAIuH,GACF,MAAMh3B,EAAMoY,sBAAA0e,MAAA3lB,MAAW6lB,GACvB,OAAO,OAAAh3B,QAAA,IAAAA,OAAA,EAAAA,EAAKupB,WAAWpR,WAAW,CAFzB,CAWXL,OAAAA,CAAQkf,GAAoB,IAAbhf,EAAAzb,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAO,KACpB,MAAMyD,EAAAgoB,kBAAA+O,kBAAM5lB,KAAA8lB,YAAAzjB,KAAArC,KAAgB6lB,GAC5Bh3B,EAAIgY,KAAOA,EACXhY,EAAIupB,WAAWzR,SAHW,CAM5BuU,KAAAA,GACE,IAAK,MAAM2K,KAAX5e,sBAAA0e,MAAoB3lB,MAAY,KAAA+lB,EAC9B,MAAM,KAAElf,GAASI,sBAAA0e,MAAA3lB,MAAW6lB,GAC5B,OAAAhf,QAAA,IAAAA,GAAA,QAAAkf,EAAAlf,EAAMyd,cAAN,IAAAyB,GAAAA,EAAc/D,OAFgB,CAIhClb,sBAAA6e,MAAA3lB,KAAalR,OAAOC,OAAO,MALrB,EApEO,SAAA+2B,WASJD,GAAO,IAAAG,EAChB,OAAQA,EAAA/e,sBAAA0e,MAAA3lB,OAAW6lB,KAAXG,EAAWH,GAAW,CAC5BzN,WAAY,IAAIjR,MAAAZ,kBAChBM,KAAM,MAHQ,KAAAof,oBAAA,IAAA3f,QAuEpB,MAAM4f,WAGJjmB,WAAAA,CAAYiY,GAAoB1R,2BAAA,KAAAyf,oBAFV,MAGpBnf,sBAAAmf,oBAAAjmB,KAA2BkY,GAQ3BlY,KAAKmmB,WAAa,IATY,CAgBhC,WAAI1f,GACF,OAAOQ,sBAAAgf,oBAAAjmB,MAAyBoY,WAAW3R,OAD/B,CAWdwU,MAAAA,GAAuB,IAAhBgB,EAAA7wB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAa,EAClB6b,sBAAAgf,oBAAAjmB,MAAyBib,OAAqB,KAAMgB,EAD/B,CAQvB,kBAAItE,GACF,MAAM,eAAEA,GAAmB1Q,sBAAAgf,oBAAAjmB,MAAyBuX,aACpD,IAAKI,EACH,OAAO,EAET,MAAM,oBAAElB,GAAFxP,sBAAAgf,oBAA0BjmB,MAChC,OACE2X,EAAeyO,MACdzO,EAAe0O,SAAU,OAAA5P,QAAA,IAAAA,OAAA,EAAAA,EAAqBoD,MAAO,CARrC,EA/rGvB7zB,QAAAkgC,WAAAA,WAgtGA,MAAM3N,mBAGJtY,WAAAA,CAAAqmB,GAaG,IAbS,SACV9N,EADU,OAEVnL,EAFU,KAGVmH,EAHU,WAIVD,EAJU,oBAKVkC,EALU,aAMVc,EANU,UAOVxD,EAPU,cAQVlI,EARU,cASVC,EATU,yBAUV2M,GAA2B,EAVjB,OAWVlN,GAAS,EAXC,WAYVmL,EAAa,MAZf4P,EAcEtmB,KAAKwY,SAAWA,EAChBxY,KAAKqN,OAASA,EACdrN,KAAKwU,KAAOA,EACZxU,KAAKuU,WAAaA,EAClBvU,KAAKyW,oBAAsBA,EAC3BzW,KAAKumB,gBAAkB,KACvBvmB,KAAKuX,aAAeA,EACpBvX,KAAKkU,WAAaH,EAClB/T,KAAK6L,cAAgBA,EACrB7L,KAAK8L,cAAgBA,EACrB9L,KAAKsU,QAAU/I,EACfvL,KAAK0W,WAAaA,EAElB1W,KAAKwmB,SAAU,EACfxmB,KAAKymB,sBAAwB,KAC7BzmB,KAAK0mB,eAAgB,EACrB1mB,KAAK2mB,2BAC0B,IAA7BlO,GAAuD,qBAAXjvB,OAC9CwW,KAAK4mB,WAAY,EACjB5mB,KAAKoY,WAAa,IAAIjR,MAAAZ,kBACtBvG,KAAKwJ,KAAO,IAAI0c,WAAWlmB,MAE3BA,KAAK6mB,aAAe7mB,KAAKib,OAAOgJ,KAAKjkB,MACrCA,KAAK8mB,eAAiB9mB,KAAK+mB,UAAU9C,KAAKjkB,MAC1CA,KAAKgnB,mBAAqBhnB,KAAKinB,cAAchD,KAAKjkB,MAClDA,KAAKknB,WAAalnB,KAAKmnB,MAAMlD,KAAKjkB,MAClCA,KAAKyH,QAAU4F,EAAO+I,cAAciQ,MA3BnC,CA8BH,aAAIrL,GACF,OAAOhb,KAAKoY,WAAW3R,QAAQ4H,OAAM,WAAa,GADpC,CAOhB4K,kBAAAA,CAAAmO,GAAoE,IAAAC,EAAAC,EAAA,IAAjD,aAAEvO,GAAe,EAAjB,sBAAwBC,GAA3CoO,EACE,GAAIpnB,KAAK4mB,UACP,OAEF,GAAI5mB,KAAKyH,QAAS,CAChB,GAAI8f,aAAAh5B,EAAgC+vB,IAAIte,KAAKyH,SAC3C,MAAM,IAAIxd,MACR,mJAKJs9B,aAAAh5B,EAAgCoqB,IAAI3Y,KAAKyH,QARzB,CAWdzH,KAAKsU,SAAW,QAAhB+S,EAAgBv8B,WAAW08B,sBAAX,IAAAH,GAAAA,EAA2BxD,UAC7C7jB,KAAKynB,QAAU38B,WAAW08B,eAAez4B,OAAOiR,KAAKkU,YACrDlU,KAAKynB,QAAQC,KAAK1nB,KAAKuX,cACvBvX,KAAKynB,QAAQE,eAAiB3nB,KAAKynB,QAAQG,qBAE7C,MAAM,cAAExR,EAAF,SAAiBC,EAAjB,UAA2B5b,EAA3B,WAAsC8b,GAAevW,KAAKqN,OAEhErN,KAAK6nB,IAAM,IAAIpgB,QAAAqgB,eACb1R,EACApW,KAAKuU,WACLvU,KAAKwU,KACLxU,KAAK6L,cACL7L,KAAK8L,cACL,CAAEkN,yBACFhZ,KAAKyW,oBACLzW,KAAK0W,YAEP1W,KAAK6nB,IAAIE,aAAa,CACpBttB,YACA4b,WACA0C,eACAxC,eAEFvW,KAAKumB,gBAAkB,EACvBvmB,KAAK0mB,eAAgB,EACrB,QAAAY,EAAAtnB,KAAKymB,6BAAL,IAAAa,GAAAA,EAAAjlB,KAAArC,KAxCkE,CA2CpEib,MAAAA,GAAqC,IAAA+M,EAAA,IAA9B79B,EAAAiB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAQ,KAAM6wB,EAAA7wB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAa,EAChC4U,KAAKwmB,SAAU,EACfxmB,KAAK4mB,WAAY,EACjB,QAAAoB,EAAAhoB,KAAK6nB,WAAL,IAAAG,GAAAA,EAAUC,aACVV,aAAAh5B,EAAgC0pB,OAAOjY,KAAKyH,SAE5CzH,KAAKwY,SACHruB,GACE,IAAImd,eAAAyU,4BAAJ,6BAAApwB,OAC+BqU,KAAKkU,WAAa,GAC/C+H,GAV6B,CAerC/C,mBAAAA,GAAsB,IAAAgP,EACfloB,KAAK0mB,eAIV,QAAAwB,EAAAloB,KAAKynB,eAAL,IAAAS,GAAAA,EAAcC,mBAAmBnoB,KAAKuX,cAElCvX,KAAKwmB,SAGTxmB,KAAK+mB,aARH/mB,KAAKymB,wBAALzmB,KAAKymB,sBAA0BzmB,KAAK8mB,eAFlB,CAatBC,SAAAA,GACE/mB,KAAKwmB,SAAU,EACXxmB,KAAK4mB,YAGL5mB,KAAKwJ,KAAK2c,WACZnmB,KAAKwJ,KAAK2c,WAAWnmB,KAAKgnB,oBAE1BhnB,KAAKinB,gBARG,CAYZA,aAAAA,GACMjnB,KAAK2mB,0BACPn9B,OAAO4+B,uBAAsB,KAC3BpoB,KAAKknB,aAAa7Y,MAAMrO,KAAK6mB,aAA7B,IAGFngB,QAAQC,UAAUoG,KAAK/M,KAAKknB,YAAY7Y,MAAMrO,KAAK6mB,aANvC,CAUhB,WAAMM,GACAnnB,KAAK4mB,YAGT5mB,KAAKumB,gBAAkBvmB,KAAK6nB,IAAIQ,oBAC9BroB,KAAKuX,aACLvX,KAAKumB,gBACLvmB,KAAK8mB,eACL9mB,KAAKynB,SAEHznB,KAAKumB,kBAAoBvmB,KAAKuX,aAAaE,UAAUpsB,SACvD2U,KAAKwmB,SAAU,EACXxmB,KAAKuX,aAAaG,YACpB1X,KAAK6nB,IAAII,aACTV,aAAAh5B,EAAgC0pB,OAAOjY,KAAKyH,SAE5CzH,KAAKwY,aAhBG,EAlJS,IAAA+O,aAAA,CAAAh5B,EACD,IAAIslB,SAwK5B,MAAMyU,QAC8B,WA13GpCtiC,QAAAsiC,QAAAA,QA43GA,MAAMC,MAC8B,YA73GpCviC,QAAAuiC,MAAAA,0ICeA,IAAAphB,EAAAC,EAAA,GACAohB,EAAAphB,EAAA,GACAqhB,EAAArhB,EAAA,GAEA,MAAM2Z,EAAoBjyB,OAAO45B,OAAO,CACtC95B,IAAK,KACLsyB,KAAM,GACNvF,eAAWrwB,IAtBbtF,EAAA+6B,kBAAAA,EAAA,IAAA4H,EAAA,IAAAriB,QAAAsiB,EAAA,IAAAtiB,QAAAuiB,EAAA,IAAAhV,QA4BA,MAAMgN,EAKJ5gB,WAAAA,GAAcgU,4BAAA,KAAA4U,GAAAriB,2BAAA,KAAAmiB,GAJF,GAAZniB,2BAAA,KAAAoiB,EAEW,IAAIv6B,KAOb2R,KAAK8oB,cAAgB,KACrB9oB,KAAK+oB,gBAAkB,KACvB/oB,KAAKgpB,mBAAqB,IAPd,CAgBdC,QAAAA,CAASj6B,EAAKk6B,GACZ,MAAMj6B,EAAQgY,sBAAA2hB,EAAA5oB,MAAcrR,IAAIK,GAChC,YAAc1D,IAAV2D,EACKi6B,EAGFp6B,OAAO4rB,OAAOwO,EAAcj6B,EANT,CAc5Bk6B,WAAAA,CAAYn6B,GACV,OAAOiY,sBAAA2hB,EAAA5oB,MAAcrR,IAAIK,EADV,CAQjBo6B,MAAAA,CAAOp6B,GAOL,GANAiY,sBAAA2hB,EAAA5oB,MAAciY,OAAOjpB,GAEM,IAAvBiY,sBAAA2hB,EAAA5oB,MAAc6Z,MAChB7Z,KAAKshB,gBAGgC,oBAA5BthB,KAAKgpB,mBAAmC,CACjD,IAAK,MAAM/5B,KAASgY,sBAAA2hB,EAAA5oB,MAAc8a,SAChC,GAAI7rB,aAAiBu5B,EAAAa,iBACnB,OAGJrpB,KAAKgpB,mBAAmB,KANyB,CAPzC,CAsBZM,QAAAA,CAASt6B,EAAKC,GACZ,MAAMJ,EAAMoY,sBAAA2hB,EAAA5oB,MAAcrR,IAAIK,GAC9B,IAAIu6B,GAAW,EACf,QAAYj+B,IAARuD,EACF,IAAK,MAAO26B,EAAO9a,KAAQ5f,OAAO26B,QAAQx6B,GACpCJ,EAAI26B,KAAW9a,IACjB6a,GAAW,EACX16B,EAAI26B,GAAS9a,QAIjB6a,GAAW,EACXtiB,sBAAA2hB,EAAA5oB,MAAciX,IAAIjoB,EAAKC,GAErBs6B,GACF1S,kBAAAgS,EAAA7oB,KAAA0pB,GAAArnB,KAAArC,MAIA/Q,aAAiBu5B,EAAAa,kBACkB,oBAA5BrpB,KAAKgpB,oBAEZhpB,KAAKgpB,mBAAmB/5B,EAAMgR,YAAY0pB,MAtBzB,CA+BrBrL,GAAAA,CAAItvB,GACF,OAAOiY,sBAAA2hB,EAAA5oB,MAAcse,IAAItvB,EADlB,CAOT46B,MAAAA,GACE,OAAO3iB,sBAAA2hB,EAAA5oB,MAAc6Z,KAAO,GAAI,EAAA1S,EAAA0iB,eAAA5iB,sBAAA2hB,EAAc5oB,OAAiB,IADxD,CAOT8pB,MAAAA,CAAOj7B,GACL,IAAK,MAAOG,EAAK0f,KAAQ5f,OAAO26B,QAAQ56B,GACtCmR,KAAKspB,SAASt6B,EAAK0f,EAFX,CAMZ,QAAImL,GACF,OAAO5S,sBAAA2hB,EAAA5oB,MAAc6Z,IADZ,CAaXyH,aAAAA,GACEra,sBAAA0hB,EAAI3oB,QACF8G,sBAAA6hB,EAAA3oB,MAAiB,GACmB,oBAAzBA,KAAK+oB,iBACd/oB,KAAK+oB,kBAJK,CAYhB,SAAIgB,GACF,OAAO,IAAI/I,EAAuBhhB,KADxB,CAQZ,gBAAIihB,GACF,GAA2B,IAAvBha,sBAAA2hB,EAAA5oB,MAAc6Z,KAChB,OAAOkH,EAET,MAAMnyB,EAAM,IAAIP,IACd6yB,EAAO,IAAIuH,EAAAuB,eACXrO,EAAY,GACRsO,EAAUn7B,OAAOC,OAAO,MAC9B,IAAIm7B,GAAY,EAEhB,IAAK,MAAOl7B,EAAK0f,KAAjBzH,sBAAA2hB,EAAyB5oB,MAAe,CACtC,MAAMmqB,EACJzb,aAAe8Z,EAAAa,iBACX3a,EAAI0b,WAA+B,EAAOH,GAC1Cvb,EACFyb,IACFv7B,EAAIqoB,IAAIjoB,EAAKm7B,GAEbjJ,EAAKmJ,OAAL,GAAA1+B,OAAeqD,EAAI,KAAArD,OAAG2+B,KAAKC,UAAUJ,KACrCD,IAAAA,IAAgBC,EAAW7F,QATS,CAaxC,GAAI4F,EAGF,IAAK,MAAMj7B,KAASL,EAAIksB,SAClB7rB,EAAMq1B,QACR3I,EAAUvrB,KAAKnB,EAAMq1B,QAK3B,OAAO11B,EAAIirB,KAAO,EACd,CAAEjrB,MAAKsyB,KAAMA,EAAKsJ,YAAa7O,aAC/BoF,CAnCa,EArJG,SAAA2I,IAyHhBziB,sBAAA0hB,EAAC3oB,QACH8G,sBAAA6hB,EAAA3oB,MAAiB,GACiB,oBAAvBA,KAAK8oB,eACd9oB,KAAK8oB,gBAJI,CApJjB9iC,EAAA66B,kBAAAA,EAAA,IAAA4J,EAAA,IAAAnkB,QA6NA,MAAM0a,UAA+BH,EAGnC5gB,WAAAA,CAAYyqB,GACV/pB,QAAA6F,2BAAA,KAAAikB,OAAA,GACA,MAAM,IAAE77B,EAAF,KAAOsyB,EAAP,UAAavF,GAAc+O,EAAOzJ,aAElC0J,EAAQ9N,gBACZjuB,EAGE+sB,EACE,CAAEgB,SAAUhB,GACZ,MAEN7U,sBAAA2jB,EAAAzqB,KAAqB,CAAEpR,IAAK+7B,EAAOzJ,OAAMvF,aAZvB,CAmBpB,SAAIoO,IACF,EAAA5iB,EAAAlc,aAAY,+CADF,CAQZ,gBAAIg2B,GACF,OAAAha,sBAAAwjB,EAAOzqB,KADU,EA3PrBha,EAAAg7B,uBAAAA,8FCoBA,IAAA4J,EAAAxjB,EAAA,GACAD,EAAAC,EAAA,GACAE,EAAAF,EAAA,GAAAyjB,EAAA,IAAAvkB,QAAAwkB,EAAA,IAAAxkB,QAAAykB,EAAA,IAAAzkB,QAAA0kB,EAAA,IAAA1kB,QAAA2kB,EAAA,IAAA3kB,QAAA4kB,EAAA,IAAA5kB,QAAA6kB,EAAA,IAAA7kB,QAAA8kB,EAAA,IAAA9kB,QAAA+kB,EAAA,IAAA/kB,QAAAglB,EAAA,IAAAhlB,QAAAilB,EAAA,IAAAjlB,QAAAklB,EAAA,IAAAllB,QAAAmlB,EAAA,IAAAnlB,QAAAolB,EAAA,IAAAplB,QAAAqlB,EAAA,IAAA9X,QAcA,MAAMwV,EAkDJppB,WAAAA,CAAY2rB,GAAY3X,4BAAA,KAAA0X,GAAAnlB,2BAAA,KAAAqkB,EAjDb,IAAXrkB,2BAAA,KAAAskB,GAEqB,GAArBtkB,2BAAA,KAAAukB,EAEiB,MAAjBvkB,2BAAA,KAAAwkB,EAEkB,MAAlBxkB,2BAAA,KAAAykB,EAEyB,MAAzBzkB,2BAAA,KAAA0kB,GAEmB,GAAnB1kB,2BAAA,KAAA2kB,EAEe,MAAf3kB,2BAAA,KAAA4kB,EAEgBprB,KAAK6rB,QAAQ5H,KAAKjkB,OAAlCwG,2BAAA,KAAA6kB,EAEiBrrB,KAAK8rB,SAAS7H,KAAKjkB,OAApCwG,2BAAA,KAAA8kB,GAEkB,GAAlB9kB,2BAAA,KAAA+kB,GAEa,GAAb/kB,2BAAA,KAAAglB,GAEgB,GAAhBO,gBAAA,uBAEkBj9B,OAAOC,OAAO,OAAhCg9B,gBAAA,kBAEa,MAAbA,gBAAA,4BAEsB,GAAtBA,gBAAA,oBAEe,MAAfvlB,2BAAA,KAAAilB,GAEe,GAAfjlB,2BAAA,KAAAklB,EAEUrC,EAAiBqC,WAgBrB1rB,KAAKC,cAAgBopB,IACvB,EAAAliB,EAAAlc,aAAY,uCAGd+U,KAAK0qB,OAASkB,EAAWlB,OACzB1qB,KAAKiS,GAAK2Z,EAAW3Z,GACrBjS,KAAKukB,MAAQvkB,KAAKwkB,OAAS,KAC3BxkB,KAAK+T,UAAY6X,EAAWlB,OAAO3W,UACnC/T,KAAKxZ,KAAOolC,EAAWplC,KACvBwZ,KAAKgsB,IAAM,KACXhsB,KAAKisB,WAAaL,EAAWM,UAC7BlsB,KAAKmsB,oBAAsB,KAC3BnsB,KAAKosB,sBAAuB,EAC5BpsB,KAAKqsB,gBAAgBC,WAAaV,EAAWU,WAC7CtsB,KAAKusB,oBAAsB,KAE3B,MACEtX,SAAAA,EACAuX,SAAWC,UAAAA,EAAWC,WAAAA,EAAb,MAAyBC,EAAzB,MAAgCC,IACvC5sB,KAAK0qB,OAAOrU,SAEhBrW,KAAKiV,SAAWA,EAChBjV,KAAK6sB,cACF,IAAM5X,EAAWjV,KAAKisB,WAAWa,eAAe7X,UAAY,IAC/DjV,KAAK+sB,eAAiB,CAACN,EAAWC,GAClC1sB,KAAKgtB,gBAAkB,CAACL,EAAOC,GAE/B,MAAOrI,EAAOC,GAAUxkB,KAAKitB,iBAC7BjtB,KAAKktB,EAAItB,EAAWsB,EAAI3I,EACxBvkB,KAAKmtB,EAAIvB,EAAWuB,EAAI3I,EAExBxkB,KAAKotB,iBAAkB,EACvBptB,KAAKqtB,SAAU,CAjCO,CAoCxB,cAAIC,GACF,OAAOx+B,OAAOy+B,eAAevtB,MAAMC,YAAY0pB,KADhC,CAIjB,4BAAW6D,GACT,OAAO,EAAArmB,EAAA3H,QACLQ,KACA,oBACAA,KAAKytB,cAAcC,WAAW,cAJH,CAQ/B,8BAAOC,CAAwBC,GAC7B,MAAMC,EAAa,IAAIC,EAAW,CAChC7b,GAAI2b,EAAOlD,OAAOqD,YAClBrD,OAAQkD,EAAOlD,OACfwB,UAAW0B,EAAO3B,aAEpB4B,EAAW1B,oBAAsByB,EAAOzB,oBACxC0B,EAAWR,SAAU,EACrBQ,EAAW5B,WAAW+B,uBAAuBH,EARR,CAevC,iBAAOI,CAAWC,GAAsB,IAAhB1mC,EAAA4D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAU,KAQhC,GAPAi+B,EAAiB8E,eAAjB9E,EAAiB8E,aAAiB,IAAI9/B,IACpC,CACE,+BACA,oCACA,sCACAO,KAAIV,GAAO,CAACA,EAAKggC,EAAKv/B,IAAIT,QAE1B,OAAA1G,QAAA,IAAAA,GAAAA,EAAS4mC,QACX,IAAK,MAAMlgC,KAAO1G,EAAQ4mC,QACxB/E,EAAiB8E,aAAalX,IAAI/oB,EAAKggC,EAAKv/B,IAAIT,IAGpD,IAA2C,IAAvCm7B,EAAiBgF,iBACnB,OAEF,MAAM/lC,EAAQgmC,iBAAiBtmC,SAASumC,iBACxClF,EAAiBgF,iBACfG,WAAWlmC,EAAMmmC,iBAAiB,qBAAuB,CAlBrB,CA0BxC,0BAAOC,CAAoB/E,EAAOgF,GAAS,CAM3C,oCAAWC,GACT,MAAO,EAD8B,CAUvC,+BAAOC,CAAyBC,GAC9B,OAAO,CAD6B,CAUtC,YAAOC,CAAMC,EAAMtE,IACjB,EAAAvjB,EAAAlc,aAAY,kBADa,CAQ3B,sBAAIgkC,GACF,MAAO,EADgB,CAIzB,gBAAIxD,GACF,OAAAxkB,sBAAAwkB,EAAOzrB,KADU,CAInB,gBAAIyrB,CAAax8B,GAAO,IAAAigC,EACtBpoB,sBAAA2kB,EAAAzrB,KAAoB/Q,GACpB,QAAAigC,EAAAlvB,KAAKgsB,WAAL,IAAAkD,GAAAA,EAAUC,UAAUC,OAAO,YAAangC,EAFlB,CAKxBogC,MAAAA,GACE,MAAO5C,EAAWC,GAAc1sB,KAAK+sB,eACrC,OAAQ/sB,KAAKsvB,gBACX,KAAK,GACHtvB,KAAKktB,GAAMltB,KAAKwkB,OAASkI,GAA2B,EAAZD,GACxCzsB,KAAKmtB,GAAMntB,KAAKukB,MAAQkI,GAA2B,EAAbC,GACtC,MACF,KAAK,IACH1sB,KAAKktB,GAAKltB,KAAKukB,MAAQ,EACvBvkB,KAAKmtB,GAAKntB,KAAKwkB,OAAS,EACxB,MACF,KAAK,IACHxkB,KAAKktB,GAAMltB,KAAKwkB,OAASkI,GAA2B,EAAZD,GACxCzsB,KAAKmtB,GAAMntB,KAAKukB,MAAQkI,GAA2B,EAAbC,GACtC,MACF,QACE1sB,KAAKktB,GAAKltB,KAAKukB,MAAQ,EACvBvkB,KAAKmtB,GAAKntB,KAAKwkB,OAAS,EAG5BxkB,KAAKuvB,mBApBE,CA2BTC,WAAAA,CAAYniB,GACVrN,KAAKisB,WAAWuD,YAAYniB,EADV,CAIpB,gBAAIoiB,GACF,OAAOzvB,KAAKisB,WAAWwD,YADN,CAOnBC,eAAAA,GACE1vB,KAAKgsB,IAAI1jC,MAAMqnC,OAAS,CADR,CAOlBC,eAAAA,GACE5vB,KAAKgsB,IAAI1jC,MAAMqnC,OAAf1oB,sBAAAykB,EAAwB1rB,KADR,CAIlB6vB,SAAAA,CAAUnF,GACO,OAAXA,IACF1qB,KAAK+T,UAAY2W,EAAO3W,UACxB/T,KAAK+sB,eAAiBrC,EAAOqC,gBAE/B/sB,KAAK0qB,OAASA,CALE,CAWlBmB,OAAAA,CAAQjP,GACD5c,KAAK8vB,sBAGN7oB,sBAAAqkB,EAACtrB,MAGH8G,sBAAAwkB,EAAAtrB,MAAuB,GAFvBA,KAAK0qB,OAAOqF,YAAY/vB,MALb,CAef8rB,QAAAA,CAASlP,GAAO,IAAAoT,EACd,IAAKhwB,KAAK8vB,oBACR,OAGF,IAAK9vB,KAAKotB,gBACR,OAOF,MAAM6C,EAASrT,EAAMsT,cACjB,OAAAD,QAAA,IAAAA,GAAAA,EAAQE,QAAR,IAAAxkC,OAAoBqU,KAAKiS,OAI7B2K,EAAMxzB,iBAED,QAAD4mC,EAAChwB,KAAK0qB,cAAL,IAAAsF,GAAAA,EAAaI,qBAChBpwB,KAAKqwB,iBArBO,CAyBhBA,cAAAA,GACMrwB,KAAKswB,UACPtwB,KAAKopB,SAELppB,KAAKuwB,QAJQ,CAWjBA,MAAAA,GACEvwB,KAAKguB,wBADE,CAITA,sBAAAA,GACEhuB,KAAKisB,WAAW+B,uBAAuBhuB,KADhB,CAWzBwwB,KAAAA,CAAMtD,EAAGC,EAAGsD,EAAIC,GACd,MAAOnM,EAAOC,GAAUxkB,KAAKitB,kBAC5BwD,EAAIC,GAAM1wB,KAAK2wB,wBAAwBF,EAAIC,GAE5C1wB,KAAKktB,GAAKA,EAAIuD,GAAMlM,EACpBvkB,KAAKmtB,GAAKA,EAAIuD,GAAMlM,EAEpBxkB,KAAKuvB,mBAPa,CAwBpBqB,SAAAA,CAAU1D,EAAGC,GACXtW,kBAAA8U,EAAA3rB,KAAA6wB,GAAAxuB,KAAArC,KAAgBA,KAAKitB,iBAAkBC,EAAGC,EAD5B,CAUhB2D,eAAAA,CAAgB5D,EAAGC,GACjBtW,kBAAA8U,EAAA3rB,KAAA6wB,GAAAxuB,KAAArC,KAAgBA,KAAK+sB,eAAgBG,EAAGC,GACxCntB,KAAKgsB,IAAI+E,eAAe,CAAEC,MAAO,WAFb,CAKtBC,IAAAA,CAAKR,EAAIC,GACP,MAAOQ,EAAaC,GAAgBnxB,KAAKitB,iBAGzC,GAFAjtB,KAAKktB,GAAKuD,EAAKS,EACflxB,KAAKmtB,GAAKuD,EAAKS,EACXnxB,KAAK0qB,SAAW1qB,KAAKktB,EAAI,GAAKltB,KAAKktB,EAAI,GAAKltB,KAAKmtB,EAAI,GAAKntB,KAAKmtB,EAAI,GAAI,CASzE,MAAM,EAAED,EAAF,EAAKC,GAAMntB,KAAKgsB,IAAIoF,wBACtBpxB,KAAK0qB,OAAO2G,cAAcrxB,KAAMktB,EAAGC,KACrCntB,KAAKktB,GAAK7/B,KAAKC,MAAM0S,KAAKktB,GAC1BltB,KAAKmtB,GAAK9/B,KAAKC,MAAM0S,KAAKmtB,GAZ6C,CAmB3E,IAAI,EAAED,EAAF,EAAKC,GAAMntB,KACf,MAAOsxB,EAAIC,GAAL1a,kBAAA8U,EAAW3rB,KAAAwxB,GAAAnvB,KAAArC,MACjBktB,GAAKoE,EACLnE,GAAKoE,EAELvxB,KAAKgsB,IAAI1jC,MAAMmpC,KAAf,GAAA9lC,QAA0B,IAAMuhC,GAAGwE,QAAQ,GAAG,KAC9C1xB,KAAKgsB,IAAI1jC,MAAMG,IAAf,GAAAkD,QAAyB,IAAMwhC,GAAGuE,QAAQ,GAAG,KAC7C1xB,KAAKgsB,IAAI+E,eAAe,CAAEC,MAAO,WA9BtB,CAkDbzB,iBAAAA,GACE,MAAO9C,EAAWC,GAAc1sB,KAAK+sB,eACrC,IAAI,EAAEG,EAAF,EAAKC,EAAL,MAAQ5I,EAAR,OAAeC,GAAWxkB,KAM9B,OALAukB,GAASkI,EACTjI,GAAUkI,EACVQ,GAAKT,EACLU,GAAKT,EAEG1sB,KAAKiV,UACX,KAAK,EACHiY,EAAI7/B,KAAKsW,IAAI,EAAGtW,KAAKkT,IAAIksB,EAAYlI,EAAO2I,IAC5CC,EAAI9/B,KAAKsW,IAAI,EAAGtW,KAAKkT,IAAImsB,EAAalI,EAAQ2I,IAC9C,MACF,KAAK,GACHD,EAAI7/B,KAAKsW,IAAI,EAAGtW,KAAKkT,IAAIksB,EAAYjI,EAAQ0I,IAC7CC,EAAI9/B,KAAKkT,IAAImsB,EAAYr/B,KAAKsW,IAAI4gB,EAAO4I,IACzC,MACF,KAAK,IACHD,EAAI7/B,KAAKkT,IAAIksB,EAAWp/B,KAAKsW,IAAI4gB,EAAO2I,IACxCC,EAAI9/B,KAAKkT,IAAImsB,EAAYr/B,KAAKsW,IAAI6gB,EAAQ2I,IAC1C,MACF,KAAK,IACHD,EAAI7/B,KAAKkT,IAAIksB,EAAWp/B,KAAKsW,IAAI6gB,EAAQ0I,IACzCC,EAAI9/B,KAAKsW,IAAI,EAAGtW,KAAKkT,IAAImsB,EAAanI,EAAO4I,IAIjDntB,KAAKktB,EAAIA,GAAKT,EACdzsB,KAAKmtB,EAAIA,GAAKT,EAEd,MAAO4E,EAAIC,GAAL1a,kBAAA8U,EAAW3rB,KAAAwxB,GAAAnvB,KAAArC,MACjBktB,GAAKoE,EACLnE,GAAKoE,EAEL,MAAM,MAAEjpC,GAAU0X,KAAKgsB,IACvB1jC,EAAMmpC,KAAN,GAAA9lC,QAAiB,IAAMuhC,GAAGwE,QAAQ,GAAG,KACrCppC,EAAMG,IAAN,GAAAkD,QAAgB,IAAMwhC,GAAGuE,QAAQ,GAAG,KAEpC1xB,KAAK2xB,WAtCa,CA2DpBhB,uBAAAA,CAAwBzD,EAAGC,GACzB,OAAAyE,EAAAvvB,KAAOgnB,EAA8B6D,EAAGC,EAAGntB,KAAKsvB,eADpB,CAS9BuC,uBAAAA,CAAwB3E,EAAGC,GACzB,OAAAyE,EAAAvvB,KAAOgnB,EAA8B6D,EAAGC,EAAG,IAAMntB,KAAKsvB,eAD1B,CAqB9B,eAAIwC,GACF,OAAO9xB,KAAKisB,WAAWa,eAAeiF,SADtB,CAIlB,kBAAIzC,GACF,OAAQtvB,KAAKisB,WAAWa,eAAe7X,SAAWjV,KAAK6sB,cAAgB,GADpD,CAIrB,oBAAII,GACF,MAAM,YACJ6E,EACA/E,gBAAiBN,EAAWC,IAC1B1sB,KACEgyB,EAAcvF,EAAYqF,EAC1BG,EAAevF,EAAaoF,EAClC,OAAO3qB,EAAA/F,YAAYY,oBACf,CAAC3U,KAAK6kC,MAAMF,GAAc3kC,KAAK6kC,MAAMD,IACrC,CAACD,EAAaC,EATG,CAiBvBE,OAAAA,CAAQ5N,EAAOC,GAAQ,IAAA4N,EACrB,MAAOlB,EAAaC,GAAgBnxB,KAAKitB,iBACzCjtB,KAAKgsB,IAAI1jC,MAAMi8B,MAAf,GAAA54B,QAA4B,IAAM44B,EAAS2M,GAAaQ,QAAQ,GAAG,KAC/DzqB,sBAAAikB,EAAClrB,QACHA,KAAKgsB,IAAI1jC,MAAMk8B,OAAf,GAAA74B,QAA6B,IAAM64B,EAAU2M,GAAcO,QAAQ,GAAG,MAExE,QAAAU,EAAAnrB,sBAAA8jB,EAAA/qB,aAAA,IAAAoyB,GAAAA,EAAqBjD,UAAUC,OAC7B,QACA7K,EAAQ8E,EAAiBgJ,mBACvB7N,EAAS6E,EAAiBgJ,kBATT,CAavBC,OAAAA,GACE,MAAM,MAAEhqC,GAAU0X,KAAKgsB,KACjB,OAAExH,EAAF,MAAUD,GAAUj8B,EACpBiqC,EAAehO,EAAMr9B,SAAS,KAC9BsrC,GAAgBvrB,sBAAAikB,EAAClrB,OAAyBwkB,EAAOt9B,SAAS,KAChE,GAAIqrC,GAAgBC,EAClB,OAGF,MAAOtB,EAAaC,GAAgBnxB,KAAKitB,iBACpCsF,IACHjqC,EAAMi8B,MAAN,GAAA54B,QAAmB,IAAM6iC,WAAWjK,GAAU2M,GAAaQ,QAAQ,GAAG,MAEpEzqB,sBAAAikB,EAAClrB,OAA0BwyB,IAC7BlqC,EAAMk8B,OAAN,GAAA74B,QAAoB,IAAM6iC,WAAWhK,GAAW2M,GAAcO,QAC5D,GACA,KAhBI,CAwBVe,qBAAAA,GACE,MAAO,CAAC,EAAG,EADW,CAyOxB,sBAAMC,GACJ,GAAAzrB,sBAAA8jB,EAAI/qB,MACF,OAEF,MAAM2yB,EAAA7rB,sBAAAikB,EAAW/qB,KAAsBhY,SAASG,cAAc,WAC9DwqC,EAAQC,UAAY,UACpB,MAAM5nC,QAAYq+B,EAAiB8E,aAAax/B,IAC9C,gCAuBF,GArBAgkC,EAAQvqC,YAAc4C,EACtB2nC,EAAQE,aAAa,aAAc7nC,GACnC2nC,EAAQG,SAAW,IACnBH,EAAQ3pC,iBAAiB,cAAese,EAAAyrB,eACxCJ,EAAQ3pC,iBAAiB,eAAe4zB,GAASA,EAAM1zB,oBACvDypC,EAAQ3pC,iBACN,SACA4zB,IACEA,EAAMxzB,iBACN4W,KAAKisB,WAAW+G,YAAYhzB,KAA5B,GAEF,CAAEizB,SAAS,IAEbN,EAAQ3pC,iBAAiB,WAAW4zB,IAC9BA,EAAMqT,SAAW0C,GAAyB,UAAd/V,EAAM5tB,MACpC4tB,EAAMxzB,iBACN4W,KAAKisB,WAAW+G,YAAYhzB,MAFyB,IAKzD6W,kBAAA8U,EAAA3rB,KAAAkzB,GAAA7wB,KAAArC,MACAA,KAAKgsB,IAAImH,OAAOR,IACXtJ,EAAiBgJ,kBAAmB,CAGvC,MAAMe,EAAU,GAChB/J,EAAiBgJ,kBAAoBhlC,KAAKkT,IACxC,IACAlT,KAAK6kC,MAAMS,EAAQvB,wBAAwB7M,OAAS,EAAI6O,EAAU,MAN7B,CA9BlB,CAoGzBC,mBAAAA,GACE,OAAOrzB,KAAKgsB,IAAIoF,uBADI,CAItB,eAAIkC,GACF,MAAO,CACLX,QAAA1rB,sBAAA4jB,EAAS7qB,MACTuzB,WAAAtsB,sBAAA6jB,EAAY9qB,MAHE,CAOlB,eAAIszB,CAAJE,GAAyC,IAAzB,QAAEb,EAAF,WAAWY,GAA3BC,EACMvsB,sBAAA4jB,EAAA7qB,QAAkB2yB,GAAW1rB,sBAAA6jB,EAAA9qB,QAA4BuzB,IAG7DzsB,sBAAA+jB,EAAA7qB,KAAgB2yB,GAChB7rB,sBAAAgkB,EAAA9qB,KAA0BuzB,GAC1B1c,kBAAA8U,EAAA3rB,KAAAkzB,GAAA7wB,KAAArC,MANuC,CAazCgW,MAAAA,GACEhW,KAAKgsB,IAAMhkC,SAASG,cAAc,OAClC6X,KAAKgsB,IAAI6G,aAAa,wBAAyB,IAAM7yB,KAAKiV,UAAY,KACtEjV,KAAKgsB,IAAI4G,UAAY5yB,KAAKxZ,KAC1BwZ,KAAKgsB,IAAI6G,aAAa,KAAM7yB,KAAKiS,IACjCjS,KAAKgsB,IAAI6G,aAAa,WAAY,GAElC7yB,KAAK4vB,kBAEL5vB,KAAKgsB,IAAIhjC,iBAAiB,UAA1Bie,sBAAAmkB,EAAqCprB,OACrCA,KAAKgsB,IAAIhjC,iBAAiB,WAA1Bie,sBAAAokB,EAAsCrrB,OAEtC,MAAOkxB,EAAaC,GAAgBnxB,KAAKitB,iBACrCjtB,KAAKsvB,eAAiB,MAAQ,IAChCtvB,KAAKgsB,IAAI1jC,MAAMmrC,SAAf,GAAA9nC,QAA+B,IAAMwlC,EAAgBD,GAAaQ,QAChE,GACA,KACF1xB,KAAKgsB,IAAI1jC,MAAMorC,UAAf,GAAA/nC,QACG,IAAMulC,EACPC,GACAO,QAAQ,GAAG,MAGf,MAAOjB,EAAIC,GAAM1wB,KAAKyyB,wBAKtB,OAJAzyB,KAAK4wB,UAAUH,EAAIC,IAEnB,EAAA9F,EAAA+I,YAAW3zB,KAAMA,KAAKgsB,IAAK,CAAC,gBAErBhsB,KAAKgsB,GA5BL,CAmCT4H,WAAAA,CAAYhX,GACV,MAAM,MAAE9a,GAAUqF,EAAA/F,YAAYQ,SACT,IAAjBgb,EAAMiX,QAAiBjX,EAAMkX,SAAWhyB,EAE1C8a,EAAMxzB,kBAIR0d,sBAAAwkB,EAAAtrB,MAAuB,GAEvB6W,kBAAA8U,EAAA3rB,KAAA+zB,GAAA1xB,KAAArC,KAAuB4c,GAVN,CAmEnB+U,SAAAA,GAAY,IAAAqC,EACV,QAAAA,EAAAh0B,KAAK0qB,cAAL,IAAAsJ,GAAAA,EAAaC,gBAAgBj0B,KADnB,CAIZk0B,qBAAAA,CAAsBxJ,EAAQwC,EAAGC,GAC/BzC,EAAOyJ,aAAan0B,MACpBA,KAAKktB,EAAIA,EACTltB,KAAKmtB,EAAIA,EACTntB,KAAKuvB,mBAJ6B,CAUpC6E,OAAAA,CAAQ3D,EAAIC,GACV,MAAM1b,EAAQhV,KAAK8xB,aACZrF,EAAWC,GAAc1sB,KAAK+sB,gBAC9BJ,EAAOC,GAAS5sB,KAAKgtB,gBACtBqH,EAAS5D,EAAKzb,EACdsf,EAAS5D,EAAK1b,EACdkY,EAAIltB,KAAKktB,EAAIT,EACbU,EAAIntB,KAAKmtB,EAAIT,EACbnI,EAAQvkB,KAAKukB,MAAQkI,EACrBjI,EAASxkB,KAAKwkB,OAASkI,EAE7B,OAAQ1sB,KAAKiV,UACX,KAAK,EACH,MAAO,CACLiY,EAAImH,EAAS1H,EACbD,EAAaS,EAAImH,EAAS9P,EAASoI,EACnCM,EAAImH,EAAS9P,EAAQoI,EACrBD,EAAaS,EAAImH,EAAS1H,GAE9B,KAAK,GACH,MAAO,CACLM,EAAIoH,EAAS3H,EACbD,EAAaS,EAAIkH,EAASzH,EAC1BM,EAAIoH,EAAS9P,EAASmI,EACtBD,EAAaS,EAAIkH,EAAS9P,EAAQqI,GAEtC,KAAK,IACH,MAAO,CACLM,EAAImH,EAAS9P,EAAQoI,EACrBD,EAAaS,EAAImH,EAAS1H,EAC1BM,EAAImH,EAAS1H,EACbD,EAAaS,EAAImH,EAAS9P,EAASoI,GAEvC,KAAK,IACH,MAAO,CACLM,EAAIoH,EAAS9P,EAASmI,EACtBD,EAAaS,EAAIkH,EAAS9P,EAAQqI,EAClCM,EAAIoH,EAAS3H,EACbD,EAAaS,EAAIkH,EAASzH,GAE9B,QACE,MAAM,IAAI3iC,MAAM,oBAzCN,CA6ChBsqC,sBAAAA,CAAuBhwB,EAAMmoB,GAC3B,MAAOxnB,EAAIC,EAAIC,EAAIC,GAAMd,EAEnBggB,EAAQnf,EAAKF,EACbsf,EAASnf,EAAKF,EAEpB,OAAQnF,KAAKiV,UACX,KAAK,EACH,MAAO,CAAC/P,EAAIwnB,EAAarnB,EAAIkf,EAAOC,GACtC,KAAK,GACH,MAAO,CAACtf,EAAIwnB,EAAavnB,EAAIqf,EAAQD,GACvC,KAAK,IACH,MAAO,CAACnf,EAAIsnB,EAAavnB,EAAIof,EAAOC,GACtC,KAAK,IACH,MAAO,CAACpf,EAAIsnB,EAAarnB,EAAImf,EAAQD,GACvC,QACE,MAAM,IAAIt6B,MAAM,oBAhBmB,CAuBzCuqC,SAAAA,GAAa,CAMblE,OAAAA,GACE,OAAO,CADC,CAOVmE,cAAAA,GACE3tB,sBAAA0kB,EAAAxrB,MAAqB,EADN,CAOjB00B,eAAAA,GACE5tB,sBAAA0kB,EAAAxrB,MAAqB,EADL,CAQlB20B,YAAAA,GACE,OAAA1tB,sBAAAukB,EAAOxrB,KADM,CASf40B,uBAAAA,GACE,OAAO,CADiB,CAQ1BC,gBAAAA,GACE,OAAO70B,KAAKgsB,MAAQhsB,KAAKotB,eADR,CASnB0H,OAAAA,GAAU,IAAAC,EAAAC,EACR,QAAAD,EAAA/0B,KAAKgsB,WAAL,IAAA+I,GAAAA,EAAU/rC,iBAAiB,UAA3Bie,sBAAAmkB,EAAsCprB,OACtC,QAAAg1B,EAAAh1B,KAAKgsB,WAAL,IAAAgJ,GAAAA,EAAUhsC,iBAAiB,WAA3Bie,sBAAAokB,EAAuCrrB,MAF/B,CAcVoqB,SAAAA,IACE,EAAAjjB,EAAAlc,aAAY,iCADkC,CAahD,kBAAOgqC,CAAYpuB,EAAM6jB,EAAQwB,GAC/B,MAAM0B,EAAS,IAAI5tB,KAAKE,UAAUD,YAAY,CAC5CyqB,SACAzY,GAAIyY,EAAOqD,YACX7B,cAEF0B,EAAO3Y,SAAWpO,EAAKoO,SAEvB,MAAOwX,EAAWC,GAAckB,EAAOb,gBAChCG,EAAGC,EAAG5I,EAAOC,GAAUoJ,EAAO2G,uBACnC1tB,EAAKtC,KACLmoB,GAOF,OALAkB,EAAOV,EAAIA,EAAIT,EACfmB,EAAOT,EAAIA,EAAIT,EACfkB,EAAOrJ,MAAQA,EAAQkI,EACvBmB,EAAOpJ,OAASA,EAASkI,EAElBkB,CAlBmC,CAyB5CxE,MAAAA,GAAS,IAAA8L,EACPl1B,KAAKgsB,IAAIlP,oBAAoB,UAA7B7V,sBAAAmkB,EAAwCprB,OACxCA,KAAKgsB,IAAIlP,oBAAoB,WAA7B7V,sBAAAokB,EAAyCrrB,OAEpCA,KAAKswB,WAGRtwB,KAAKuwB,SAEHvwB,KAAK0qB,OACP1qB,KAAK0qB,OAAOtB,OAAOppB,MAEnBA,KAAKisB,WAAWkJ,aAAan1B,MAK/B,QAAAk1B,EAAAjuB,sBAAA8jB,EAAA/qB,aAAA,IAAAk1B,GAAAA,EAAqB9L,SACrBtiB,sBAAAikB,EAAA/qB,KAAsB,MACtB8G,sBAAAkkB,EAAAhrB,KAAuB,KAnBhB,CAyBT,eAAIo1B,GACF,OAAO,CADS,CAOlBC,aAAAA,GACMr1B,KAAKo1B,cACPve,kBAAA8U,EAAA3rB,KAAAs1B,GAAAjzB,KAAArC,MACAiH,sBAAAkkB,EAAAnrB,MAAkBmvB,UAAU/F,OAAO,UAHvB,CAUhBmM,MAAAA,GAAS,IAAAC,EACPx1B,KAAKq1B,gBACL,QAAAG,EAAAx1B,KAAKgsB,WAAL,IAAAwJ,GAAAA,EAAUrG,UAAUxW,IAAI,iBAFjB,CAQT8c,QAAAA,GAAW,IAAAC,EAAAC,EAAAC,EACT,QAAAF,EAAAzuB,sBAAAkkB,EAAAnrB,aAAA,IAAA01B,GAAAA,EAAmBvG,UAAUxW,IAAI,UACjC,QAAAgd,EAAA31B,KAAKgsB,WAAL,IAAA2J,GAAAA,EAAUxG,UAAU/F,OAAO,kBACvB,QAAJwM,EAAI51B,KAAKgsB,WAAL,IAAA4J,GAAAA,EAAUC,SAAS7tC,SAAS8tC,gBAG9B91B,KAAKisB,WAAWwD,aAAazD,IAAI+J,OAN1B,CAeXC,YAAAA,CAAatvC,EAAMuI,GAAQ,CAM3BgnC,cAAAA,GACEhvB,sBAAA8jB,EAAI/qB,QACFiH,sBAAA8jB,EAAA/qB,MAAoBk2B,QAAS,EAFhB,CAUjBC,aAAAA,GACElvB,sBAAA8jB,EAAI/qB,QACFiH,sBAAA8jB,EAAA/qB,MAAoBk2B,QAAS,EAFjB,CAShBE,eAAAA,GAAmB,CAKnB,cAAIC,GACF,OAAOr2B,KAAKgsB,GADG,CAQjB,aAAIsK,GACF,OAAArvB,sBAAAskB,EAAOvrB,KADO,CAQhB,aAAIs2B,CAAUrnC,GACZ6X,sBAAAykB,EAAAvrB,KAAkB/Q,GACb+Q,KAAK0qB,SAGNz7B,GACF+Q,KAAK0qB,OAAOqF,YAAY/vB,MACxBA,KAAK0qB,OAAO6L,gBAAgBv2B,OAE5BA,KAAK0qB,OAAO6L,gBAAgB,MATX,CAkBrBC,cAAAA,CAAejS,EAAOC,GACpB1d,sBAAAokB,EAAAlrB,MAAwB,GACxB,MAAMy2B,EAAclS,EAAQC,GACtB,MAAEl8B,GAAU0X,KAAKgsB,IACvB1jC,EAAMmuC,YAAcA,EACpBnuC,EAAMk8B,OAAS,MALa,CAQ9B,mBAAWkS,GACT,OAAO,EADa,EAxzCxB,SAAA7F,EAAA8F,EAkU8BzJ,EAAGC,GAAG,IAAtB5I,EAAOC,GAAnBmS,GACGzJ,EAAGC,GAAKntB,KAAK2wB,wBAAwBzD,EAAGC,GAEzCntB,KAAKktB,GAAKA,EAAI3I,EACdvkB,KAAKmtB,GAAKA,EAAI3I,EAEdxkB,KAAKuvB,mBAN2B,UAAAiC,IA+DhC,MAAON,EAAaC,GAAgBnxB,KAAKitB,kBACnC,iBAAEoB,GAAqBhF,EACvB6D,EAAImB,EAAmB6C,EACvB/D,EAAIkB,EAAmB8C,EAC7B,OAAQnxB,KAAKiV,UACX,KAAK,GACH,MAAO,EAAEiY,EAAGC,GACd,KAAK,IACH,MAAO,CAACD,EAAGC,GACb,KAAK,IACH,MAAO,CAACD,GAAIC,GACd,QACE,MAAO,EAAED,GAAIC,GAbG,UAAAyE,EA0DF1E,EAAGC,EAAGyJ,GACxB,OAAQA,GACN,KAAK,GACH,MAAO,CAACzJ,GAAID,GACd,KAAK,IACH,MAAO,EAAEA,GAAIC,GACf,KAAK,IACH,MAAO,EAAEA,EAAGD,GACd,QACE,MAAO,CAACA,EAAGC,GATgB,UAAA0J,EA+Bd5hB,GACjB,OAAQA,GACN,KAAK,GAAI,CACP,MAAOwX,EAAWC,GAAc1sB,KAAK+sB,eACrC,MAAO,CAAC,GAAIN,EAAYC,EAAYA,EAAaD,EAAW,EAFrD,CAIT,KAAK,IACH,MAAO,EAAE,EAAG,EAAG,GAAI,GACrB,KAAK,IAAK,CACR,MAAOA,EAAWC,GAAc1sB,KAAK+sB,eACrC,MAAO,CAAC,EAAGN,EAAYC,GAAaA,EAAaD,EAAW,EAFpD,CAIV,QACE,MAAO,CAAC,EAAG,EAAG,EAAG,GAbM,UAAA6I,IAoF3B,GAAAruB,sBAAAkkB,EAAInrB,MACF,OAEF8G,sBAAAqkB,EAAAnrB,KAAoBhY,SAASG,cAAc,QAC3C8e,sBAAAkkB,EAAAnrB,MAAkBmvB,UAAUxW,IAAI,YAChC,MAAMme,EAAU,CAAC,UAAW,WAAY,cAAe,cAClD92B,KAAKosB,sBACR0K,EAAQ1mC,KAAK,YAAa,cAAe,eAAgB,cAE3D,IAAK,MAAM5J,KAAQswC,EAAS,CAC1B,MAAM9K,EAAMhkC,SAASG,cAAc,OACnC8e,sBAAAkkB,EAAAnrB,MAAkBmzB,OAAOnH,GACzBA,EAAImD,UAAUxW,IAAI,UAAWnyB,GAC7BwlC,EAAIhjC,iBACF,cACA6tB,kBAAA8U,EAAA3rB,KAAA+2B,GAAyB9S,KAAKjkB,KAAMxZ,IAEtCwlC,EAAIhjC,iBAAiB,cAAese,EAAAyrB,cARV,CAU5B/yB,KAAKgsB,IAAIgL,QAAT/vB,sBAAAkkB,EAAiBnrB,MApBD,UAAA+2B,EAuBEvwC,EAAMo2B,GACxBA,EAAMxzB,iBACN,MAAM,MAAE0Y,GAAUqF,EAAA/F,YAAYQ,SAC9B,GAAqB,IAAjBgb,EAAMiX,QAAiBjX,EAAMkX,SAAWhyB,EAC1C,OAGF,MAAMm1B,EAA0BpgB,kBAAA8U,EAAA3rB,KAAAk3B,GAAyBjT,KAAKjkB,KAAMxZ,GAC9D2wC,EAAiBn3B,KAAKyrB,aAC5BzrB,KAAKyrB,cAAe,EACpB,MAAM2L,EAAqB,CAAEC,SAAS,EAAMpE,SAAS,GACrDzpC,OAAOR,iBACL,cACAiuC,EACAG,GAEF,MAAME,EAASt3B,KAAKktB,EACdqK,EAASv3B,KAAKmtB,EACdqK,EAAax3B,KAAKukB,MAClBkT,EAAcz3B,KAAKwkB,OACnBkT,EAAoB13B,KAAK0qB,OAAOsB,IAAI1jC,MAAMqvC,OAC1CC,EAAc53B,KAAKgsB,IAAI1jC,MAAMqvC,OACnC33B,KAAKgsB,IAAI1jC,MAAMqvC,OAAS33B,KAAK0qB,OAAOsB,IAAI1jC,MAAMqvC,OAC5CnuC,OAAO8kC,iBAAiB1R,EAAMqT,QAAQ0H,OAExC,MAAME,EAAoBA,KACxB73B,KAAKyrB,aAAe0L,EACpB3tC,OAAOszB,oBAAoB,YAAa+a,GACxCruC,OAAOszB,oBAAoB,OAAQ+a,GACnCruC,OAAOszB,oBACL,cACAma,EACAG,GAEFp3B,KAAK0qB,OAAOsB,IAAI1jC,MAAMqvC,OAASD,EAC/B13B,KAAKgsB,IAAI1jC,MAAMqvC,OAASC,EAExB,MAAME,EAAO93B,KAAKktB,EACZ6K,EAAO/3B,KAAKmtB,EACZ6K,EAAWh4B,KAAKukB,MAChB0T,EAAYj4B,KAAKwkB,OAErBsT,IAASR,GACTS,IAASR,GACTS,IAAaR,GACbS,IAAcR,GAKhBz3B,KAAKwvB,YAAY,CACf0I,IAAKA,KACHl4B,KAAKukB,MAAQyT,EACbh4B,KAAKwkB,OAASyT,EACdj4B,KAAKktB,EAAI4K,EACT93B,KAAKmtB,EAAI4K,EACT,MAAO7G,EAAaC,GAAgBnxB,KAAKitB,iBACzCjtB,KAAKmyB,QAAQjB,EAAc8G,EAAU7G,EAAe8G,GACpDj4B,KAAKuvB,mBAAL,EAEF4I,KAAMA,KACJn4B,KAAKukB,MAAQiT,EACbx3B,KAAKwkB,OAASiT,EACdz3B,KAAKktB,EAAIoK,EACTt3B,KAAKmtB,EAAIoK,EACT,MAAOrG,EAAaC,GAAgBnxB,KAAKitB,iBACzCjtB,KAAKmyB,QAAQjB,EAAcsG,EAAYrG,EAAesG,GACtDz3B,KAAKuvB,mBAAL,EAEF6I,UAAU,GAnBZ,EAsBF5uC,OAAOR,iBAAiB,YAAa6uC,GAGrCruC,OAAOR,iBAAiB,OAAQ6uC,EA3ED,UAAAX,EA8Eb1wC,EAAMo2B,GACxB,MAAOsU,EAAaC,GAAgBnxB,KAAKitB,iBACnCqK,EAASt3B,KAAKktB,EACdqK,EAASv3B,KAAKmtB,EACdqK,EAAax3B,KAAKukB,MAClBkT,EAAcz3B,KAAKwkB,OACnB6T,EAAWhP,EAAiBqN,SAAWxF,EACvCoH,EAAYjP,EAAiBqN,SAAWvF,EAKxCe,EAAQhF,GAAK7/B,KAAK6kC,MAAU,IAAJhF,GAAa,IACrCqL,EAAA1hB,kBAAA8U,EAAiB3rB,KAAA62B,GAAAx0B,KAAArC,KAAwBA,KAAKiV,UAC9CujB,EAASA,CAACtL,EAAGC,IAAM,CACvBoL,EAAe,GAAKrL,EAAIqL,EAAe,GAAKpL,EAC5CoL,EAAe,GAAKrL,EAAIqL,EAAe,GAAKpL,GAExCsL,EAAA5hB,kBAAA8U,EAAoB3rB,KAAA62B,GAAAx0B,KAAArC,KAAwB,IAAMA,KAAKiV,UAK7D,IAAIyjB,EACAC,EACAC,GAAa,EACbC,GAAe,EAEnB,OAAQryC,GACN,IAAK,UACHoyC,GAAa,EACbF,EAAWA,CAACI,EAAGC,IAAM,CAAC,EAAG,GACzBJ,EAAcA,CAACG,EAAGC,IAAM,CAACD,EAAGC,GAC5B,MACF,IAAK,YACHL,EAAWA,CAACI,EAAGC,IAAM,CAACD,EAAI,EAAG,GAC7BH,EAAcA,CAACG,EAAGC,IAAM,CAACD,EAAI,EAAGC,GAChC,MACF,IAAK,WACHH,GAAa,EACbF,EAAWA,CAACI,EAAGC,IAAM,CAACD,EAAG,GACzBH,EAAcA,CAACG,EAAGC,IAAM,CAAC,EAAGA,GAC5B,MACF,IAAK,cACHF,GAAe,EACfH,EAAWA,CAACI,EAAGC,IAAM,CAACD,EAAGC,EAAI,GAC7BJ,EAAcA,CAACG,EAAGC,IAAM,CAAC,EAAGA,EAAI,GAChC,MACF,IAAK,cACHH,GAAa,EACbF,EAAWA,CAACI,EAAGC,IAAM,CAACD,EAAGC,GACzBJ,EAAcA,CAACG,EAAGC,IAAM,CAAC,EAAG,GAC5B,MACF,IAAK,eACHL,EAAWA,CAACI,EAAGC,IAAM,CAACD,EAAI,EAAGC,GAC7BJ,EAAcA,CAACG,EAAGC,IAAM,CAACD,EAAI,EAAG,GAChC,MACF,IAAK,aACHF,GAAa,EACbF,EAAWA,CAACI,EAAGC,IAAM,CAAC,EAAGA,GACzBJ,EAAcA,CAACG,EAAGC,IAAM,CAACD,EAAG,GAC5B,MACF,IAAK,aACHD,GAAe,EACfH,EAAWA,CAACI,EAAGC,IAAM,CAAC,EAAGA,EAAI,GAC7BJ,EAAcA,CAACG,EAAGC,IAAM,CAACD,EAAGC,EAAI,GAIpC,MAAMC,EAAQN,EAASlB,EAAYC,GAC7BwB,EAAgBN,EAAYnB,EAAYC,GAC9C,IAAIyB,EAAsBV,KAAUS,GACpC,MAAME,EAAYjH,EAAMoF,EAAS4B,EAAoB,IAC/CE,EAAYlH,EAAMqF,EAAS2B,EAAoB,IACrD,IAAIG,EAAS,EACTC,EAAS,GAERC,EAAQC,GAAUx5B,KAAK2wB,wBAC1B/T,EAAM6c,UACN7c,EAAM8c,WA5DUC,IAACzM,EAAGC,EAgEtB,IAFCoM,EAAQC,IA9DUtM,EA8DUqM,EAASrI,EA9DhB/D,EA8D6BqM,EAASrI,EA9DhC,CAC1BsH,EAAkB,GAAKvL,EAAIuL,EAAkB,GAAKtL,EAClDsL,EAAkB,GAAKvL,EAAIuL,EAAkB,GAAKtL,IA8DhDyL,EAAY,CACd,MAAMgB,EAAUvsC,KAAKwsC,MAAMrC,EAAYC,GACvC4B,EAASC,EAASjsC,KAAKsW,IACrBtW,KAAKkT,IACHlT,KAAKwsC,MACHZ,EAAc,GAAKD,EAAM,GAAKO,EAC9BN,EAAc,GAAKD,EAAM,GAAKQ,GAC5BI,EAEJ,EAAIpC,EACJ,EAAIC,GAGNY,EAAWb,EACXc,EAAYb,EAdA,MAgBLoB,EACTQ,EACEhsC,KAAKsW,IACH00B,EACAhrC,KAAKkT,IAAI,EAAGlT,KAAK0Y,IAAIkzB,EAAc,GAAKD,EAAM,GAAKO,KACjD/B,EAEN8B,EACEjsC,KAAKsW,IACH20B,EACAjrC,KAAKkT,IAAI,EAAGlT,KAAK0Y,IAAIkzB,EAAc,GAAKD,EAAM,GAAKQ,KACjD/B,EAGR,MAAMO,EAAW9F,EAAMsF,EAAa6B,GAC9BpB,EAAY/F,EAAMuF,EAAc6B,GACtCJ,EAAsBV,KAAUG,EAAYX,EAAUC,IACtD,MAAMH,EAAOqB,EAAYD,EAAoB,GACvCnB,EAAOqB,EAAYF,EAAoB,GAE7Cl5B,KAAKukB,MAAQyT,EACbh4B,KAAKwkB,OAASyT,EACdj4B,KAAKktB,EAAI4K,EACT93B,KAAKmtB,EAAI4K,EAET/3B,KAAKmyB,QAAQjB,EAAc8G,EAAU7G,EAAe8G,GACpDj4B,KAAKuvB,mBA7H0B,gBAAA2D,IA0K/B,MAAMW,EAAA5sB,sBAAA8jB,EAAS/qB,MACf,IAAK6zB,EACH,OAE8C,IAAAiG,EAAhD,IAAI7yB,sBAAA4jB,EAAC7qB,QAAiBiH,sBAAA6jB,EAAC9qB,MAGrB,OAFA6zB,EAAO1E,UAAU/F,OAAO,aACxB,QAAA0Q,EAAA7yB,sBAAA+jB,EAAAhrB,aAAA,IAAA85B,GAAAA,EAAsB1Q,UAGxBC,EAAiB8E,aACdx/B,IAAI,qCACJoe,MAAK/hB,IACJ6oC,EAAOhB,aAAa,aAAc7nC,EAAlC,IAGJ,IAAI+uC,EAAA9yB,sBAAA+jB,EAAUhrB,MACd,IAAK+5B,EAAS,CACZjzB,sBAAAkkB,EAAAhrB,KAAuB+5B,EAAU/xC,SAASG,cAAc,SACxD4xC,EAAQnH,UAAY,UACpBmH,EAAQlH,aAAa,OAAQ,WAC7B,MAAM5gB,EAAM8nB,EAAQ9nB,GAAR,oBAAAtmB,OAAiCqU,KAAKiS,IAClD4hB,EAAOhB,aAAa,mBAAoB5gB,GAExC,MAAM+nB,EAAwB,IAC9BnG,EAAO7qC,iBAAiB,cAAc,KACpC8d,sBAAAmkB,EAAAjrB,KAA8Bkc,YAAW,KACvCpV,sBAAAmkB,EAAAjrB,KAA8B,MAC9BiH,sBAAA+jB,EAAAhrB,MAAqBmvB,UAAUxW,IAAI,QACnC3Y,KAAKisB,WAAWgO,UAAUC,SAAS,kBAAmB,CACpD1rB,OAAQxO,KACRa,QAAS,CACPna,KAAM,UACNyzC,QAASn6B,KAAKstB,WACdzmB,KAAM,CACJuzB,OAAQ,sBANd,GAUCJ,GAbH,IAeFnG,EAAO7qC,iBAAiB,cAAc,KAAM,IAAAqxC,EAC1CljB,aAAAlQ,sBAAAgkB,EAAajrB,OACb8G,sBAAAmkB,EAAAjrB,KAA8B,MAC9B,QAAAq6B,EAAApzB,sBAAA+jB,EAAAhrB,aAAA,IAAAq6B,GAAAA,EAAsBlL,UAAU/F,OAAO,OAAvC,GA3BU,CA8BdyK,EAAO1E,UAAUxW,IAAI,QACrBohB,EAAQO,UAAYrzB,sBAAA6jB,EAAA9qB,YACVqpB,EAAiB8E,aAAax/B,IAClC,sCAFcsY,sBAAA4jB,EAIhB7qB,MAEC+5B,EAAQQ,YACX1G,EAAOV,OAAO4G,EAvDa,UAAAhG,EAmIbnX,GAChB,IAAK5c,KAAKyrB,aACR,OAGF,MAAM+O,EAAax6B,KAAKisB,WAAWuO,WAAWx6B,MAG9C,IAAIo3B,EAAoBqD,EAFxBz6B,KAAKisB,WAAWyO,mBAGZF,IACFpD,EAAqB,CAAEC,SAAS,EAAMpE,SAAS,GAC/CwH,EAAsBxxC,IACpB,MAAOwnC,EAAIC,GAAM1wB,KAAK2wB,wBAAwB1nC,EAAEwwC,UAAWxwC,EAAEywC,WAC7D15B,KAAKisB,WAAW0O,oBAAoBlK,EAAIC,EAAxC,EAEFlnC,OAAOR,iBACL,cACAyxC,EACArD,IAIJ,MAAMS,EAAoBA,KAYxB,GAXAruC,OAAOszB,oBAAoB,YAAa+a,GACxCruC,OAAOszB,oBAAoB,OAAQ+a,GAC/B2C,GACFhxC,OAAOszB,oBACL,cACA2d,EACArD,GAIJtwB,sBAAAwkB,EAAAtrB,MAAuB,IAClBA,KAAKisB,WAAW2O,iBAAkB,CACrC,MAAM,MAAE94B,GAAUqF,EAAA/F,YAAYQ,SAE3Bgb,EAAMkX,UAAYhyB,GACnB8a,EAAMie,UACLje,EAAMke,SAAWh5B,EAElB9B,KAAK0qB,OAAOqQ,eAAe/6B,MAE3BA,KAAK0qB,OAAOqF,YAAY/vB,KATW,GAazCxW,OAAOR,iBAAiB,YAAa6uC,GAIrCruC,OAAOR,iBAAiB,OAAQ6uC,EAnDT,CA77BJmD,EAAjB3R,EA67BqB0C,gBA77BrB1C,EAAN,oBAqC6B,GAA3B0C,gBArCI1C,EAAN,gBAuCyB,IAAIuB,EAAAqQ,cAA3BlP,gBAvCI1C,EAAN,UAyCmB,GAAjB0C,gBAzCI1C,EAAN,oBA6C6B,GAjF7BrjC,EAAAqjC,iBAAAA,EAk2CA,MAAMyE,UAAmBzE,EACvBppB,WAAAA,CAAYoN,GACV1M,MAAM0M,GACNrN,KAAKmsB,oBAAsB9e,EAAO8e,oBAClCnsB,KAAKqtB,SAAU,CAHG,CAMpBjD,SAAAA,GACE,MAAO,CACLnY,GAAIjS,KAAKmsB,oBACTkB,SAAS,EACTtZ,UAAW/T,KAAK+T,UAJR,uKC10Cd,SAAoBllB,EAAKqsC,EAASC,GAChC,IAAK,MAAM30C,KAAQ20C,EACjBD,EAAQlyC,iBAAiBxC,EAAMqI,EAAIrI,GAAMy9B,KAAKp1B,GAFT,iBAWzC,SAAsBusC,GACpB,OAAO/tC,KAAK6kC,MAAM7kC,KAAKkT,IAAI,IAAKlT,KAAKsW,IAAI,EAAG,IAAMy3B,KAC/C/uC,SAAS,IACTE,SAAS,EAAG,IAHc,EAvB/B,IAAA4a,EAAAC,EAAA,GAUAE,EAAAF,EAAA,GAa+Bi0B,EAAA,IAAA/0B,QAS/B,MAAMg1B,EAAUr7B,WAAAA,GAAAuG,2BAAA,KAAA60B,EACR,EAAN,CAMAE,KAAAA,GAAQ,IAAAC,EAAAC,EACN,MAAO,GAAP9vC,OAAUwb,EAAAnV,wBAAHrG,QAAAmb,sBAAAu0B,EAA4Br7B,MAAAw7B,EAAAv0B,sBAAAo0B,EAAAr7B,MAAAy7B,EAAAD,IAAAA,IAAAC,GAD7B,EAPM,IAAAC,EAAA,IAAAp1B,QAAAq1B,EAAA,IAAAr1B,QAAAs1B,EAAA,IAAAt1B,QAAAu1B,EAAA,IAAAhoB,QAoBhB,MAAMioB,EAAa77B,WAAAA,GAAAgU,4BAAA,KAAA4nB,GAAAr1B,2BAAA,KAAAk1B,GACP,EAAAv0B,EAAA40B,YAAVv1B,2BAAA,KAAAm1B,EAEM,GAANn1B,2BAAA,KAAAo1B,EAES,KAAT,CAEA,8BAAWI,GAMT,MAEMC,EADS,IAAIt6B,gBAAgB,EAAG,GACnBu6B,WAAW,MACxBC,EAAQ,IAAIC,MAClBD,EAAM/yB,IAJA,uKAKN,MAAM3C,EAAU01B,EAAMrsC,SAASid,MAAK,KAClCkvB,EAAII,UAAUF,EAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC8B,IAAjE,IAAI56B,YAAY06B,EAAIK,aAAa,EAAG,EAAG,EAAG,GAAGz1B,KAAKjX,QAAQ,MAGnE,OAAO,EAAAuX,EAAA3H,QAAOQ,KAAM,sBAAuByG,EAhBZ,CAyFjC,iBAAM81B,CAAYt2C,GAChB,MAAM,aAAEu2C,EAAF,KAAgBh2C,EAAhB,KAAsBqzB,EAAtB,KAA4BnzB,GAAST,EAC3C,OAAA4wB,kBAAAglB,EAAO77B,KAAAy8B,GAAAp6B,KAAArC,KAAA,GAAArU,OAAa6wC,EAAa,KAAA7wC,OAAGnF,EAAK,KAAAmF,OAAGkuB,EAAK,KAAAluB,OAAGjF,GAAQT,EAFtC,CAKxB,gBAAMy2C,CAAWxxC,GACf,OAAA2rB,kBAAAglB,EAAO77B,KAAAy8B,GAAAp6B,KAAArC,KAAU9U,EAAKA,EADF,CAItB,eAAMyxC,CAAU1qB,GACdhL,sBAAA20B,EAAA57B,OAAA8G,sBAAA80B,EAAA57B,KAAgB,IAAI3R,KACpB,MAAMwY,EAAOI,sBAAA20B,EAAA57B,MAAYrR,IAAIsjB,GAC7B,OAAKpL,EAGDA,EAAKyd,QACPzd,EAAK+1B,YAAc,EACZ/1B,GAGLA,EAAK5gB,KACA+Z,KAAKu8B,YAAY11B,EAAK5gB,MAExB+Z,KAAK08B,WAAW71B,EAAK3b,KAVnB,IAJS,CAiBpB2xC,SAAAA,CAAU5qB,GACR,MAAMpL,EAAOI,sBAAA20B,EAAA57B,MAAYrR,IAAIsjB,GAC7B,OAAK,OAAApL,QAAA,IAAAA,GAAAA,EAAMi2B,MAGJj2B,EAAKk2B,OAFH,IAHG,CAQdC,QAAAA,CAAS/qB,GACPhL,sBAAA20B,EAAA57B,OAAA8G,sBAAA80B,EAAA57B,KAAgB,IAAI3R,KACpB,MAAMwY,EAAOI,sBAAA20B,EAAA57B,MAAYrR,IAAIsjB,GACxBpL,IAGLA,EAAK+1B,YAAc,EACK,IAApB/1B,EAAK+1B,aAGT/1B,EAAKyd,OAAS,MAVH,CAiBb2Y,SAAAA,CAAUhrB,GACR,OAAOA,EAAGzmB,WAAH,SAAAG,OAAAsb,sBAAAy0B,EAAuB17B,MAAA,KADlB,EAnJhB,eAAAy8B,EA0BaztC,EAAKkuC,GAAS,IAAAC,EACvBl2B,sBAAA20B,EAAA57B,OAAA8G,sBAAA80B,EAAA57B,KAAgB,IAAI3R,KACpB,IAAIwY,EAAOI,sBAAA20B,EAAA57B,MAAYrR,IAAIK,GAC3B,GAAa,OAAT6X,EAEF,OAAO,KAET,GAAI,QAAJs2B,EAAIt2B,SAAA,IAAAs2B,GAAAA,EAAM7Y,OAER,OADAzd,EAAK+1B,YAAc,EACZ/1B,EAET,IAAI,IAAAu2B,EAAAC,EAOF,IAAIlB,EACJ,GAPAt1B,IAAAA,EAAS,CACPyd,OAAQ,KACRrS,GAAA,SAAAtmB,OAAAsb,sBAAAy0B,EAAa17B,MAAA,KAAArU,QAAAmb,sBAAA60B,EAAgB37B,MAAAo9B,EAAAn2B,sBAAA00B,EAAA37B,MAAAq9B,EAAAD,IAAAA,IAAAC,IAC7BT,WAAY,EACZE,OAAO,IAGc,kBAAZI,EAAsB,CAC/Br2B,EAAK3b,IAAMgyC,EAEX,MAAMI,QAAiB3Y,MAAMuY,GAC7B,IAAKI,EAASC,GACZ,MAAM,IAAItzC,MAAMqzC,EAASE,YAE3BrB,QAAcmB,EAASG,MAPQ,MAS/BtB,EAAQt1B,EAAK5gB,KAAOi3C,EAGtB,GAAmB,kBAAff,EAAMz1C,KAA0B,CAGlC,MAAMg3C,EAA+B5B,EAAaE,oBAC5C2B,EAAa,IAAIC,WACjBC,EAAe,IAAIzB,MACnB0B,EAAe,IAAIp3B,SAAQ,CAACC,EAASC,KACzCi3B,EAAaE,OAAS,KACpBl3B,EAAKyd,OAASuZ,EACdh3B,EAAKi2B,OAAQ,EACbn2B,GAAA,EAEFg3B,EAAWI,OAASxvB,UAClB,MAAMrjB,EAAO2b,EAAKk2B,OAASY,EAAWK,OAGtCH,EAAaz0B,UAAas0B,EAAP,GAAA/xC,OACZT,EAAI,uCACPA,CAFJ,EAIF2yC,EAAaI,QAAUN,EAAWM,QAAUr3B,CAA5C,IAEF+2B,EAAWO,cAAc/B,SACnB2B,CAvB4B,MAyBlCj3B,EAAKyd,aAAe6Z,kBAAkBhC,GAExCt1B,EAAK+1B,WAAa,CA/ChB,CAgDF,MAAO3zC,GACPK,QAAQa,MAAMlB,GACd4d,EAAO,IAFG,CAQZ,OAJAI,sBAAA20B,EAAA57B,MAAYiX,IAAIjoB,EAAK6X,GACjBA,GACFI,sBAAA20B,EAAA57B,MAAYiX,IAAIpQ,EAAKoL,GAAIpL,GAEpBA,CAnEgB,CA1BRu3B,EAAbtC,EA0BqB,IAAAuC,EAAA,IAAA/3B,QAAAg4B,EAAA,IAAAh4B,QAAAi4B,EAAA,IAAAj4B,QAAAk4B,EAAA,IAAAl4B,QAoI3B,MAAMm4B,EASJx+B,WAAAA,GAA2B,IAAfy+B,EAAAtzC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAU,IAAtBob,2BAAA,KAAA63B,EARY,IAAZ73B,2BAAA,KAAA83B,GAEU,GAAV93B,2BAAA,KAAA+3B,OAAA,GAAA/3B,2BAAA,KAAAg4B,GAIa,GAGX13B,sBAAAy3B,EAAAv+B,KAAgB0+B,EADS,CAkB3B/lB,GAAAA,CAAAgmB,GAOG,IAPC,IACFzG,EADE,KAEFC,EAFE,SAGFC,EAHE,KAIF1xC,EAAO8kB,IAJL,oBAKFozB,GAAsB,EALpB,SAMFC,GAAW,GANbF,EAYE,GAJIvG,GACFF,IAGFjxB,sBAAAq3B,EAAIt+B,MACF,OAGF,MAAMzF,EAAO,CAAE29B,MAAKC,OAAMzxC,QAC1B,IAAwB,IAApBugB,sBAAAu3B,EAAAx+B,MAQF,OAPIiH,sBAAAo3B,EAAAr+B,MAAe3U,OAAS,IAG1B4b,sBAAAo3B,EAAAr+B,MAAe3U,OAAS,GAE1Byb,sBAAA03B,EAAAx+B,KAAiB,QACjBiH,sBAAAo3B,EAAAr+B,MAAe5P,KAAKmK,GAItB,GAAIqkC,GAAuB33B,sBAAAo3B,EAAAr+B,MAAAiH,sBAAAu3B,EAAex+B,OAAgBtZ,OAASA,EAQjE,OAJIm4C,IACFtkC,EAAK49B,KAAOlxB,sBAAAo3B,EAAAr+B,MAAAiH,sBAAAu3B,EAAex+B,OAAgBm4B,WAE7ClxB,sBAAAo3B,EAAAr+B,MAAAiH,sBAAAu3B,EAAex+B,OAAkBzF,GAInC,MAAMukC,EAAO73B,sBAAAu3B,EAAAx+B,MAAiB,EAC1B8+B,IAAA73B,sBAAAs3B,EAASv+B,MACXiH,sBAAAo3B,EAAAr+B,MAAe++B,OAAO,EAAG,IAEzBj4B,sBAAA03B,EAAAx+B,KAAiB8+B,GACbA,EAAO73B,sBAAAo3B,EAAAr+B,MAAe3U,QACxB4b,sBAAAo3B,EAAAr+B,MAAe++B,OAAOD,IAI1B73B,sBAAAo3B,EAAAr+B,MAAe5P,KAAKmK,EA1CnB,CAgDH49B,IAAAA,IAC0B,IAApBlxB,sBAAAu3B,EAAAx+B,QAMJ8G,sBAAAw3B,EAAAt+B,MAAe,GACfiH,sBAAAo3B,EAAAr+B,MAAAiH,sBAAAu3B,EAAex+B,OAAgBm4B,OAC/BrxB,sBAAAw3B,EAAAt+B,MAAe,GAEf8G,sBAAA03B,EAAAx+B,KAAAiH,sBAAAu3B,EAAAx+B,MAAkB,GAXb,CAiBPg/B,IAAAA,GACM/3B,sBAAAu3B,EAAAx+B,MAAiBiH,sBAAAo3B,EAAAr+B,MAAe3U,OAAS,IAC3Cyb,sBAAA03B,EAAAx+B,KAAAiH,sBAAAu3B,EAAAx+B,MAAkB,GAGlB8G,sBAAAw3B,EAAAt+B,MAAe,GACfiH,sBAAAo3B,EAAAr+B,MAAAiH,sBAAAu3B,EAAex+B,OAAgBk4B,MAC/BpxB,sBAAAw3B,EAAAt+B,MAAe,GAPZ,CAePi/B,kBAAAA,GACE,OAA2B,IAApBh4B,sBAAAu3B,EAAAx+B,KADY,CAQrBk/B,kBAAAA,GACE,OAAOj4B,sBAAAu3B,EAAAx+B,MAAiBiH,sBAAAo3B,EAAAr+B,MAAe3U,OAAS,CAD7B,CAIrB+jB,OAAAA,GACEtI,sBAAAu3B,EAAAr+B,KAAiB,KADT,EAnWZha,EAAAy4C,eAAAA,EAAA,IAAAU,EAAA,IAAAtrB,QA4WA,MAAMurB,EAOJn/B,WAAAA,CAAYo/B,GAAWprB,4BAAA,KAAAkrB,GACrBn/B,KAAKpQ,OAAS,GACdoQ,KAAKq/B,UAAY,IAAIhxC,IACrB2R,KAAKs/B,QAAU,IAAI5mB,IAEnB,MAAM,MAAE5W,GAAUqF,EAAA/F,YAAYQ,SAC9B,IAAK,MAAO1S,EAAMspB,EAAUhxB,EAAU,CAAC,KAAM63C,EAC3C,IAAK,MAAMrwC,KAAOE,EAAM,CACtB,MAAMqwC,EAAWvwC,EAAIxD,WAAW,QAC5BsW,GAASy9B,GACXv/B,KAAKq/B,UAAUpoB,IAAIjoB,EAAIwU,MAAM,GAAI,CAAEgV,WAAUhxB,YAC7CwY,KAAKs/B,QAAQ3mB,IAAI3pB,EAAI1I,MAAM,KAAKk5C,IAAI,KAC1B19B,GAAUy9B,IACpBv/B,KAAKq/B,UAAUpoB,IAAIjoB,EAAK,CAAEwpB,WAAUhxB,YACpCwY,KAAKs/B,QAAQ3mB,IAAI3pB,EAAI1I,MAAM,KAAKk5C,IAAI,IAPhB,CAPL,CAqDvBC,IAAAA,CAAKC,EAAM9iB,GACT,IAAK5c,KAAKs/B,QAAQhhB,IAAI1B,EAAM5tB,KAC1B,OAEF,MAAMkwB,EAAOlf,KAAKq/B,UAAU1wC,IAAfkoB,kBAAAsoB,EAAmBn/B,KAAA2/B,GAAAt9B,KAAArC,KAAgB4c,IAChD,IAAKsC,EACH,OAEF,MAAM,SACJ1G,EACAhxB,SAAS,QAAEo4C,GAAU,EAAZ,KAAmBC,EAAO,GAA1B,QAA8BC,EAAU,OAC/C5gB,EAEA4gB,IAAYA,EAAQJ,EAAM9iB,KAG9BpE,EAASyL,KAAKyb,KAASG,EAAvBrnB,GAIKonB,IACHhjB,EAAM1zB,kBACN0zB,EAAMxzB,kBAtBQ,EA5DE,SAAAu2C,EAiCT/iB,GACLA,EAAMmjB,QACR//B,KAAKpQ,OAAOQ,KAAK,OAEfwsB,EAAMkX,SACR9zB,KAAKpQ,OAAOQ,KAAK,QAEfwsB,EAAMke,SACR96B,KAAKpQ,OAAOQ,KAAK,QAEfwsB,EAAMie,UACR76B,KAAKpQ,OAAOQ,KAAK,SAEnB4P,KAAKpQ,OAAOQ,KAAKwsB,EAAM5tB,KACvB,MAAMd,EAAM8R,KAAKpQ,OAAOhD,KAAK,KAG7B,OAFAoT,KAAKpQ,OAAOvE,OAAS,EAEd6C,CAjBS,CA7YpBlI,EAAAo5C,gBAAAA,EAmcA,MAAMnE,EAMJ,WAAI+E,GASF,MAAMC,EAAS,IAAI5xC,IAAI,CACrB,CAAC,aAAc,MACf,CAAC,SAAU,QAGb,OADA,EAAAiZ,EAAA44B,gBAAeD,IACR,EAAA94B,EAAA3H,QAAOQ,KAAM,UAAWigC,EAdnB,CAyBdE,OAAAA,CAAQC,GACN,MAAMC,GAAM,EAAA/4B,EAAAg5B,QAAOF,GACnB,IAAK52C,OAAO+2C,WAAW,2BAA2BC,QAChD,OAAOH,EAGT,IAAK,MAAO75C,EAAMi6C,KAAQzgC,KAAKggC,QAC7B,GAAIS,EAAIC,OAAM,CAACxT,EAAG9/B,IAAM8/B,IAAMmT,EAAIjzC,KAChC,OAAO6tC,EAAa0F,eAAehyC,IAAInI,GAG3C,OAAO65C,CAXM,CAqBf3S,UAAAA,CAAWlnC,GACT,MAAM65C,EAAMrgC,KAAKggC,QAAQrxC,IAAInI,GAC7B,OAAK65C,EAGEl5B,EAAA3E,KAAKC,gBAAgB49B,GAFnB75C,CAHM,EApDAulC,gBAAbkP,EAAN,iBAC0B,IAAI5sC,IAAI,CAC9B,CAAC,aAAc,CAAC,EAAG,EAAG,IACtB,CAAC,SAAU,CAAC,IAAK,IAAK,SAtc1BrI,EAAAi1C,aAAAA,EAAA,IAAA2F,EAAA,IAAAt6B,QAAAu6B,EAAA,IAAAv6B,QAAAw6B,EAAA,IAAAx6B,QAAAy6B,EAAA,IAAAz6B,QAAA06B,EAAA,IAAA16B,QAAA26B,EAAA,IAAA36B,QAAA46B,EAAA,IAAA56B,QAAA66B,EAAA,IAAA76B,QAAA86B,EAAA,IAAA96B,QAAA+6B,EAAA,IAAA/6B,QAAAg7B,EAAA,IAAAh7B,QAAAi7B,EAAA,IAAAj7B,QAAAk7B,EAAA,IAAAl7B,QAAAm7B,EAAA,IAAAn7B,QAAAo7B,EAAA,IAAAp7B,QAAAq7B,EAAA,IAAAr7B,QAAAs7B,EAAA,IAAAt7B,QAAAu7B,EAAA,IAAAv7B,QAAAw7B,EAAA,IAAAx7B,QAAAy7B,EAAA,IAAAz7B,QAAA07B,EAAA,IAAA17B,QAAA27B,EAAA,IAAA37B,QAAA47B,EAAA,IAAA57B,QAAA67B,EAAA,IAAA77B,QAAA87B,EAAA,IAAA97B,QAAA+7B,EAAA,IAAA/7B,QAAAg8B,EAAA,IAAAh8B,QAAAi8B,EAAA,IAAAj8B,QAAAk8B,EAAA,IAAAl8B,QAAAm8B,EAAA,IAAAn8B,QAAAo8B,EAAA,IAAAp8B,QAAAq8B,GAAA,IAAAr8B,QAAAs8B,GAAA,IAAAt8B,QAAAu8B,GAAA,IAAAv8B,QAAAw8B,GAAA,IAAAjvB,QAwgBA,MAAMkvB,GA+EJ,2BAAWC,GACT,MAAMC,EAAQF,GAA0B7iC,UAElCgjC,EAAexD,IAGnB,MAAM,cAAE5J,GAAkB9tC,SAC1B,OACE8tC,GACA7uB,sBAAA27B,GAAAlD,GAAgB7J,SAASC,IACzB4J,EAAKyD,uBAHP,EAOIC,EAAQpjC,KAAKqjC,gBACbC,EAAMtjC,KAAKujC,cAEjB,OAAO,EAAAp8B,EAAA3H,QACLQ,KACA,mBACA,IAAIo/B,EAAgB,CAClB,CAAC,CAAC,SAAU,cAAe6D,EAAMO,WACjC,CAAC,CAAC,SAAU,cAAeP,EAAM9K,MACjC,CAGE,CACE,SACA,eACA,mBACA,eACA,oBAEF8K,EAAMjE,MAER,CACE,CACE,YACA,gBACA,iBACA,kBACA,gBACA,oBACA,qBACA,SACA,cACA,eACA,cAEFiE,EAAMhrB,QAER,CAAC,CAAC,SAAU,cAAegrB,EAAMQ,aACjC,CACE,CAAC,YAAa,iBACdR,EAAMS,yBACN,CAAE7D,KAAM,EAAEuD,EAAO,GAAItD,QAASoD,IAEhC,CACE,CAAC,iBAAkB,uBACnBD,EAAMS,yBACN,CAAE7D,KAAM,EAAEyD,EAAK,GAAIxD,QAASoD,IAE9B,CACE,CAAC,aAAc,kBACfD,EAAMS,yBACN,CAAE7D,KAAM,CAACuD,EAAO,GAAItD,QAASoD,IAE/B,CACE,CAAC,kBAAmB,wBACpBD,EAAMS,yBACN,CAAE7D,KAAM,CAACyD,EAAK,GAAIxD,QAASoD,IAE7B,CACE,CAAC,UAAW,eACZD,EAAMS,yBACN,CAAE7D,KAAM,CAAC,GAAIuD,GAAQtD,QAASoD,IAEhC,CACE,CAAC,eAAgB,qBACjBD,EAAMS,yBACN,CAAE7D,KAAM,CAAC,GAAIyD,GAAMxD,QAASoD,IAE9B,CACE,CAAC,YAAa,iBACdD,EAAMS,yBACN,CAAE7D,KAAM,CAAC,EAAGuD,GAAQtD,QAASoD,IAE/B,CACE,CAAC,iBAAkB,uBACnBD,EAAMS,yBACN,CAAE7D,KAAM,CAAC,EAAGyD,GAAMxD,QAASoD,MA1FL,CAgG9BjjC,WAAAA,CACE0jC,EACAC,EACAC,EACAC,EACAC,EACArtB,GACAzC,4BAAA,KAAA6uB,IAAAt8B,2BAAA,KAAAo6B,EArLc,MAAhBp6B,2BAAA,KAAAq6B,EAEc,IAAIxyC,KAAlBmY,2BAAA,KAAAs6B,EAEa,IAAIzyC,KAAjBmY,2BAAA,KAAAu6B,EAEkB,MAAlBv6B,2BAAA,KAAAw6B,EAEqB,MAArBx6B,2BAAA,KAAAy6B,EAEkB,IAAIxC,GAAtBj4B,2BAAA,KAAA06B,EAEoB,GAApB16B,2BAAA,KAAA26B,EAEgC,IAAIzoB,KAApClS,2BAAA,KAAA46B,EAEmB,MAAnB56B,2BAAA,KAAA66B,EAEe,MAAf76B,2BAAA,KAAA86B,EAEoB,IAAI5oB,KAAxBlS,2BAAA,KAAA+6B,EAEiB,MAAjB/6B,2BAAA,KAAAg7B,EAEa,IAAIlG,GAAjB90B,2BAAA,KAAAi7B,GAEa,GAAbj7B,2BAAA,KAAAk7B,GAEa,GAAbl7B,2BAAA,KAAAm7B,EAEqB,MAArBn7B,2BAAA,KAAAo7B,EAEQz6B,EAAAlV,qBAAqBC,MAA7BsU,2BAAA,KAAAq7B,EAEmB,IAAInpB,KAAvBlS,2BAAA,KAAAs7B,EAEc,MAAdt7B,2BAAA,KAAAu7B,EAEa/hC,KAAKgkC,KAAK/f,KAAKjkB,OAA5BwG,2BAAA,KAAAw7B,EAEchiC,KAAK+1B,MAAM9R,KAAKjkB,OAA9BwG,2BAAA,KAAAy7B,EAEajiC,KAAKikC,KAAKhgB,KAAKjkB,OAA5BwG,2BAAA,KAAA07B,EAEYliC,KAAKkkC,IAAIjgB,KAAKjkB,OAA1BwG,2BAAA,KAAA27B,EAEcniC,KAAK+uB,MAAM9K,KAAKjkB,OAA9BwG,2BAAA,KAAA47B,EAEgBpiC,KAAKmkC,QAAQlgB,KAAKjkB,OAAlCwG,2BAAA,KAAA67B,EAEwBriC,KAAKokC,gBAAgBngB,KAAKjkB,OAAlDwG,2BAAA,KAAA87B,EAEuBtiC,KAAKqkC,eAAepgB,KAAKjkB,OAAhDwG,2BAAA,KAAA+7B,EAEwBviC,KAAKskC,gBAAgBrgB,KAAKjkB,OAAlDwG,2BAAA,KAAAg8B,EAE2BxiC,KAAKukC,mBAAmBtgB,KAAKjkB,OAAxDwG,2BAAA,KAAAi8B,EAEkB,CAChBnM,WAAW,EACXhG,SAAS,EACT2O,oBAAoB,EACpBC,oBAAoB,EACpBsF,mBAAmB,IALrBh+B,2BAAA,KAAAk8B,EAQe,CAAC,EAAG,IAAnBl8B,2BAAA,KAAAm8B,GAEwB,MAAxBn8B,2BAAA,KAAAo8B,GAEa,MAAbp8B,2BAAA,KAAAq8B,GAEU,MA8GR/7B,sBAAA87B,GAAA5iC,KAAkB2jC,GAClB78B,sBAAA+7B,GAAA7iC,KAAe4jC,GACf98B,sBAAAi6B,EAAA/gC,KAAuB6jC,GACvB7jC,KAAKi6B,UAAY6J,EACjB9jC,KAAKi6B,UAAUwK,IAAI,gBAAnBx9B,sBAAAo7B,EAAoCriC,OACpCA,KAAKi6B,UAAUwK,IAAI,eAAnBx9B,sBAAAq7B,EAAmCtiC,OACnCA,KAAKi6B,UAAUwK,IAAI,gBAAnBx9B,sBAAAs7B,EAAoCviC,OACpCA,KAAKi6B,UAAUwK,IAAI,mBAAnBx9B,sBAAAu7B,EAAuCxiC,OACvC8G,sBAAAk6B,EAAAhhC,KAA0B+jC,EAAY1yB,mBACtCvK,sBAAAy6B,EAAAvhC,KAAsB+jC,EAAYj4B,eAClChF,sBAAAg7B,EAAA9hC,KAAmB0W,GACnB1W,KAAK8sB,eAAiB,CACpBiF,UAAWzqB,EAAAo9B,cAAcC,iBACzB1vB,SAAU,EAdZ,CAkBF7F,OAAAA,GACEyH,kBAAAisB,GAAA9iC,KAAA4kC,IAAAviC,KAAArC,MACA6W,kBAAAisB,GAAA9iC,KAAA6kC,IAAAxiC,KAAArC,MACAA,KAAKi6B,UAAU6K,KAAK,gBAApB79B,sBAAAo7B,EAAqCriC,OACrCA,KAAKi6B,UAAU6K,KAAK,eAApB79B,sBAAAq7B,EAAoCtiC,OACpCA,KAAKi6B,UAAU6K,KAAK,gBAApB79B,sBAAAs7B,EAAqCviC,OACrCA,KAAKi6B,UAAU6K,KAAK,mBAApB79B,sBAAAu7B,EAAwCxiC,OACxC,IAAK,MAAM+kC,KAAS99B,sBAAA65B,EAAA9gC,MAAgB8a,SAClCiqB,EAAM31B,UAERnI,sBAAA65B,EAAA9gC,MAAgBkb,QAChBjU,sBAAA45B,EAAA7gC,MAAiBkb,QACjBjU,sBAAAq6B,EAAAthC,MAAuBkb,QACvBpU,sBAAA85B,EAAA5gC,KAAqB,MACrBiH,sBAAA46B,EAAA7hC,MAAsBkb,QACtBjU,sBAAAg6B,EAAAjhC,MAAqBoP,UACrBnI,sBAAA85B,EAAA/gC,MAAqBoP,SAhBb,CAmBV,aAAI41B,GACF,OAAO,EAAA79B,EAAA3H,QACLQ,KACA,YACAiH,sBAAA66B,EAAA9hC,MACIiH,sBAAAs6B,EAAAvhC,MAAoBilC,aAClBh+B,sBAAA66B,EAAA9hC,MAAiBklC,WACjBj+B,sBAAA66B,EAAA9hC,MAAiBuW,YAEnB,OATQ,CAahB,aAAI4uB,GACF,OAAO,EAAAh+B,EAAA3H,QACLQ,KACA,YACAsuB,iBAAArnB,sBAAA27B,GAAiB5iC,OAAiBmlC,UAJtB,CAQhBnS,WAAAA,CAAYpF,GAAQ,IAAAwX,EAClB,QAAAA,EAAAn+B,sBAAA85B,EAAA/gC,aAAA,IAAAolC,GAAAA,EAAsBpS,YAAYhzB,KAAM4tB,EADtB,CAIpByW,cAAAA,CAAAgB,GAA+B,IAAhB,WAAEzzB,GAAjByzB,EACEv+B,sBAAAo6B,EAAAlhC,KAAyB4R,EAAa,EADT,CAI/B0zB,kBAAAA,GACEr+B,sBAAA27B,GAAA5iC,MAAgB+1B,OADG,CAIrBwP,UAAAA,CAAWrY,EAAGC,GACZ,IAAK,MAAM4X,KAAS99B,sBAAA65B,EAAA9gC,MAAgB8a,SAAU,CAC5C,MACEoS,EAAGsY,EACHrY,EAAGsY,EAFC,MAGJlhB,EAHI,OAIJC,GACEugB,EAAM/Y,IAAIoF,wBACd,GACElE,GAAKsY,GACLtY,GAAKsY,EAASjhB,GACd4I,GAAKsY,GACLtY,GAAKsY,EAASjhB,EAEd,OAAOugB,CAbmC,CAgB9C,OAAO,IAjBQ,CAoBjBW,iBAAAA,GAAiC,IAAfz2C,EAAA7D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAChB6b,sBAAA47B,GAAA7iC,MAAamvB,UAAUC,OAAO,eAAgBngC,EADf,CAIjC02C,gBAAAA,CAAiB/X,GACf3mB,sBAAAq6B,EAAAthC,MAAuB2Y,IAAIiV,EADJ,CAIzBgY,mBAAAA,CAAoBhY,GAClB3mB,sBAAAq6B,EAAAthC,MAAuBiY,OAAO2V,EADJ,CAI5B0W,eAAAA,CAAAuB,GAA2B,IAAX,MAAE7wB,GAAlB6wB,EACE7lC,KAAKqwB,iBACLrwB,KAAK8sB,eAAeiF,UAAY/c,EAAQ1N,EAAAo9B,cAAcC,iBACtD,IAAK,MAAM/W,KAAX3mB,sBAAAq6B,EAAqBthC,MACnB4tB,EAAO0W,iBAJgB,CAQ3BC,kBAAAA,CAAAuB,GAAsC,IAAnB,cAAEC,GAArBD,EACE9lC,KAAKqwB,iBACLrwB,KAAK8sB,eAAe7X,SAAW8wB,CAFK,CAStC/X,sBAAAA,CAAuBJ,GAElBA,EAAO0C,YAARrpB,sBAAA+5B,EACAhhC,OACCiH,sBAAA+5B,EAAAhhC,MAAwBse,IAAIsP,EAAO3b,KAEpChL,sBAAA+5B,EAAAhhC,MAAwBspB,SAASsE,EAAO3b,GAAI2b,EANjB,CAoB/BoW,IAAAA,GACE,IAAKhkC,KAAKgmC,aACR,OAMF,MAAM,cAAElQ,GAAkB9tC,SAC1B,IAAK,MAAM4lC,KAAX3mB,sBAAA46B,EAAqB7hC,MACnB,GAAI4tB,EAAO5B,IAAI6J,SAASC,GAAgB,CACtChvB,sBAAA66B,EAAA3hC,KAA0B,CAAC4tB,EAAQkI,IACnClI,EAAOkC,qBAAsB,EAC7B,KAHsC,CAVrC,CAkBPiG,KAAAA,GACE,IAAI9uB,sBAAA06B,EAAC3hC,MACH,OAEF,MAAOimC,EAAYC,GAAbj/B,sBAAA06B,EAAkC3hC,MACxC8G,sBAAA66B,EAAA3hC,KAA0B,MAC1BkmC,EAAkBl9C,iBAChB,WACA,KACEi9C,EAAWnW,qBAAsB,CAAjC,GAEF,CAAEqW,MAAM,IAEVD,EAAkBnQ,OAbZ,CAwCRqQ,gBAAAA,GACEvvB,kBAAAisB,GAAA9iC,KAAAqmC,IAAAhkC,KAAArC,MACA6W,kBAAAisB,GAAA9iC,KAAAsmC,IAAAjkC,KAAArC,KAFiB,CAKnBumC,mBAAAA,GACE1vB,kBAAAisB,GAAA9iC,KAAA4kC,IAAAviC,KAAArC,MACA6W,kBAAAisB,GAAA9iC,KAAAwmC,IAAAnkC,KAAArC,KAFoB,CAStBikC,IAAAA,CAAKrnB,GAAO,IAAA6pB,EAMV,GALA7pB,EAAMxzB,iBAGN,QAAAq9C,EAAAx/B,sBAAA25B,EAAA5gC,aAAA,IAAAymC,GAAAA,EAAoBpW,kBAEfrwB,KAAKgmC,aACR,OAGF,MAAMU,EAAU,GAChB,IAAK,MAAM9Y,KAAX3mB,sBAAA46B,EAAqB7hC,MAAuB,CAC1C,MAAMmqB,EAAayD,EAAOxD,WAA+B,GACrDD,GACFuc,EAAQt2C,KAAK+5B,EAH2B,CAMrB,IAAnBuc,EAAQr7C,QAIZuxB,EAAMvzB,cAAcK,QAAQ,oBAAqB4gC,KAAKC,UAAUmc,GArBtD,CA4BZxC,GAAAA,CAAItnB,GACF5c,KAAKikC,KAAKrnB,GACV5c,KAAKiY,QAFI,CASX8W,KAAAA,CAAMnS,GACJA,EAAMxzB,iBACN,MAAM,cAAEC,GAAkBuzB,EAC1B,IAAK,MAAMoS,KAAQ3lC,EAAcywB,MAC/B,IAAK,MAAMwT,KAAXrmB,sBAAAo6B,EAAyBrhC,MACvB,GAAIstB,EAAWuB,yBAAyBG,EAAKtoC,MAE3C,YADA4mC,EAAWyB,MAAMC,EAAMhvB,KAAKyvB,cAMlC,IAAI5oB,EAAOxd,EAAcypB,QAAQ,qBACjC,IAAKjM,EACH,OAGF,IACEA,EAAOyjB,KAAKqc,MAAM9/B,EADhB,CAEF,MAAO9W,GAEP,YADA,EAAAoX,EAAA5d,MAAA,WAAAoC,OAAgBoE,EAAGrI,QAAQ,MADhB,CAKb,IAAKtB,MAAMC,QAAQwgB,GACjB,OAGF7G,KAAKyjC,cACL,MAAMsB,EAAQ/kC,KAAKyvB,aAEnB,IACE,MAAMmX,EAAa,GACnB,IAAK,MAAMhZ,KAAU/mB,EAAM,CACzB,MAAMggC,EAAqB9B,EAAM9P,YAAYrH,GAC7C,IAAKiZ,EACH,OAEFD,EAAWx2C,KAAKy2C,EALS,CAQ3B,MAAM3O,EAAMA,KACV,IAAK,MAAMtK,KAAUgZ,EACnB/vB,kBAAAisB,GAAA9iC,KAAA8mC,IAAAzkC,KAAArC,KAAuB4tB,GAEzB/W,kBAAAisB,GAAA9iC,KAAA+mC,IAAA1kC,KAAArC,KAAoB4mC,EAApB,EAEIzO,EAAOA,KACX,IAAK,MAAMvK,KAAUgZ,EACnBhZ,EAAOxE,QADwB,EAInCppB,KAAKwvB,YAAY,CAAE0I,MAAKC,OAAMC,UAAU,GArBtC,CAsBF,MAAOroC,IACP,EAAAoX,EAAA5d,MAAA,WAAAoC,OAAgBoE,EAAGrI,QAAQ,MADhB,CArDF,CA8Dby8C,OAAAA,CAAQvnB,GAAO,IAAAoqB,EACR,QAADA,EAAChnC,KAAKinC,mBAAL,IAAAD,GAAAA,EAAkBpS,2BACrBmO,GAA0BC,iBAAiBvD,KAAKz/B,KAAM4c,EAF3C,CAYfwnB,eAAAA,CAAgBvjC,GACV,CAAC,OAAQ,OAAQ,SAAU,aAAakB,SAASlB,EAAQra,OAC3DwZ,KAAKa,EAAQra,OAFQ,CAqCzB0gD,eAAAA,CAAgB5Q,GACVA,GACFzf,kBAAAisB,GAAA9iC,KAAAmnC,IAAA9kC,KAAArC,MACA6W,kBAAAisB,GAAA9iC,KAAAqmC,IAAAhkC,KAAArC,MACA6W,kBAAAisB,GAAA9iC,KAAAsmC,IAAAjkC,KAAArC,MACA6W,kBAAAisB,GAAA9iC,KAAAonC,IAAA/kC,KAAArC,KAA2B,CACzBs2B,UAAWrvB,sBAAA26B,EAAA5hC,QAAemH,EAAAlV,qBAAqBC,KAC/Co+B,QAAAzZ,kBAAAisB,GAAS9iC,KAAAqnC,IAAAhlC,KAAArC,MACTi/B,mBAAoBh4B,sBAAAg6B,EAAAjhC,MAAqBi/B,qBACzCC,mBAAoBj4B,sBAAAg6B,EAAAjhC,MAAqBk/B,qBACzCsF,mBAAmB,MAGrB3tB,kBAAAisB,GAAA9iC,KAAA6kC,IAAAxiC,KAAArC,MACA6W,kBAAAisB,GAAA9iC,KAAA4kC,IAAAviC,KAAArC,MACA6W,kBAAAisB,GAAA9iC,KAAAwmC,IAAAnkC,KAAArC,MACA6W,kBAAAisB,GAAA9iC,KAAAonC,IAAA/kC,KAAArC,KAA2B,CACzBs2B,WAAW,IAEbt2B,KAAK0lC,mBAAkB,GAnBA,CAuB3B4B,mBAAAA,CAAoBC,GAClB,IAAAtgC,sBAAAo6B,EAAIrhC,MAAJ,CAGA8G,sBAAAu6B,EAAArhC,KAAoBunC,GACpB,IAAK,MAAMja,KAAXrmB,sBAAAo6B,EAAyBrhC,MACvB6W,kBAAAisB,GAAA9iC,KAAAwnC,IAAAnlC,KAAArC,KAAuBstB,EAAWsB,0BALb,CADE,CAc3B2M,KAAAA,GACE,OAAOt0B,sBAAAu6B,EAAAxhC,MAAgBu7B,OADjB,CAIR,gBAAI9L,GACF,OAAOxoB,sBAAA65B,EAAA9gC,MAAgBrR,IAAhBsY,sBAAAi6B,EAAoBlhC,MADV,CAInBynC,QAAAA,CAAS1zB,GACP,OAAO9M,sBAAA65B,EAAA9gC,MAAgBrR,IAAIolB,EADT,CAIpB,oBAAI2zB,GACF,OAAAzgC,sBAAAi6B,EAAOlhC,KADc,CAQvB2nC,QAAAA,CAAS5C,GACP99B,sBAAA65B,EAAA9gC,MAAgBiX,IAAI8tB,EAAMhxB,UAAWgxB,GACrC99B,sBAAAw6B,EAAIzhC,MACF+kC,EAAM6C,SAEN7C,EAAM8C,SALM,CAahBC,WAAAA,CAAY/C,GACV99B,sBAAA65B,EAAA9gC,MAAgBiY,OAAO8sB,EAAMhxB,UADZ,CASnBg0B,UAAAA,CAAWC,GAAqB,IAAfC,EAAA78C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAS,KACxB,GAAI6b,sBAAA26B,EAAA5hC,QAAegoC,EAAnB,CAIA,GADAlhC,sBAAA86B,EAAA5hC,KAAagoC,GACTA,IAAS7gC,EAAAlV,qBAAqBC,KAGhC,OAFA8N,KAAKknC,iBAAgB,QACrBrwB,kBAAAisB,GAAA9iC,KAAAkoC,IAAA7lC,KAAArC,MAGFA,KAAKknC,iBAAgB,GACrBrwB,kBAAAisB,GAAA9iC,KAAAmoC,IAAA9lC,KAAArC,MACAA,KAAKyjC,cACL,IAAK,MAAMsB,KAAS99B,sBAAA65B,EAAA9gC,MAAgB8a,SAClCiqB,EAAMgD,WAAWC,GAEnB,GAAKC,EAGL,IAAK,MAAMra,KAAU3mB,sBAAA45B,EAAA7gC,MAAiB8a,SACpC,GAAI8S,EAAOzB,sBAAwB8b,EAAQ,CACzCjoC,KAAK+vB,YAAYnC,GACjBA,EAAOwI,kBACP,KAHyC,CAnBpB,CADK,CAiChCgS,aAAAA,CAAcJ,GACRA,IAAA/gC,sBAAA26B,EAAS5hC,OAGbA,KAAKi6B,UAAUC,SAAS,6BAA8B,CACpD1rB,OAAQxO,KACRgoC,QANgB,CAepBhS,YAAAA,CAAatvC,EAAMuI,GACjB,GAAIgY,sBAAAo6B,EAACrhC,MAGL,GAAItZ,IAASygB,EAAA7U,2BAA2BE,OAAxC,CAKA,IAAK,MAAMo7B,KAAX3mB,sBAAA46B,EAAqB7hC,MACnB4tB,EAAOoI,aAAatvC,EAAMuI,GAG5B,IAAK,MAAMq+B,KAAXrmB,sBAAAo6B,EAAyBrhC,MACvBstB,EAAWoB,oBAAoBhoC,EAAMuI,EAVS,MAC9C+Q,KAAKyvB,aAAa4Y,aAAa3hD,EALT,CAkB1B4hD,aAAAA,GAAgC,IAAlBC,EAAAn9C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACZ,GAAI6b,sBAAAy6B,EAAA1hC,QAAoBuoC,EAAxB,CAGAzhC,sBAAA46B,EAAA1hC,KAAkBuoC,GAClB,IAAK,MAAMxD,KAAS99B,sBAAA65B,EAAA9gC,MAAgB8a,SAC9BytB,EACFxD,EAAMyD,eAENzD,EAAM0D,cAER1D,EAAM/Y,IAAImD,UAAUC,OAAO,UAAWmZ,EAVN,CADJ,CA6ChCG,UAAAA,CAAW30B,GACT,MAAM2yB,EAAU,GAChB,IAAK,MAAM9Y,KAAU3mB,sBAAA45B,EAAA7gC,MAAiB8a,SAChC8S,EAAO7Z,YAAcA,GACvB2yB,EAAQt2C,KAAKw9B,GAGjB,OAAO8Y,CAPa,CAetBiC,SAAAA,CAAU12B,GACR,OAAOhL,sBAAA45B,EAAA7gC,MAAiBrR,IAAIsjB,EADhB,CAQd22B,SAAAA,CAAUhb,GACR3mB,sBAAA45B,EAAA7gC,MAAiBiX,IAAI2W,EAAO3b,GAAI2b,EADhB,CAQlBuH,YAAAA,CAAavH,GAMT,IAAAib,EALF5hC,sBAAA45B,EAAA7gC,MAAiBiY,OAAO2V,EAAO3b,IAC/BjS,KAAKy1B,SAAS7H,GAEXA,EAAOzB,qBACPllB,sBAAAk6B,EAAAnhC,MAAmCse,IAAIsP,EAAOzB,sBAE/C,QAAA0c,EAAA5hC,sBAAA+5B,EAAAhhC,aAAA,IAAA6oC,GAAAA,EAAyBzf,OAAOwE,EAAO3b,GAPtB,CAerB62B,2BAAAA,CAA4Blb,GAC1B3mB,sBAAAk6B,EAAAnhC,MAAmC2Y,IAAIiV,EAAOzB,qBAC9CyB,EAAOP,SAAU,CAFiB,CAUpC0b,0BAAAA,CAA2B5c,GACzB,OAAOllB,sBAAAk6B,EAAAnhC,MAAmCse,IAAI6N,EADA,CAQhD6c,8BAAAA,CAA+Bpb,GAC7B3mB,sBAAAk6B,EAAAnhC,MAAmCiY,OAAO2V,EAAOzB,qBACjDyB,EAAOP,SAAU,CAFoB,CAsBvCkJ,eAAAA,CAAgB3I,GACV3mB,sBAAA25B,EAAA5gC,QAAuB4tB,IAI3B9mB,sBAAA85B,EAAA5gC,KAAqB4tB,GACjBA,GACF/W,kBAAAisB,GAAA9iC,KAAAwnC,IAAAnlC,KAAArC,KAAuB4tB,EAAOqB,oBAPV,CAexB8L,cAAAA,CAAenN,GACb,GAAI3mB,sBAAA46B,EAAA7hC,MAAsBse,IAAIsP,GAM5B,OALA3mB,sBAAA46B,EAAA7hC,MAAsBiY,OAAO2V,GAC7BA,EAAO6H,gBACP5e,kBAAAisB,GAAA9iC,KAAAonC,IAAA/kC,KAAArC,KAA2B,CACzBwkC,kBAAmBxkC,KAAKgmC,eAI5B/+B,sBAAA46B,EAAA7hC,MAAsB2Y,IAAIiV,GAC1BA,EAAO2H,SACP1e,kBAAAisB,GAAA9iC,KAAAwnC,IAAAnlC,KAAArC,KAAuB4tB,EAAOqB,oBAC9BpY,kBAAAisB,GAAA9iC,KAAAonC,IAAA/kC,KAAArC,KAA2B,CACzBwkC,mBAAmB,GAbA,CAqBvBzU,WAAAA,CAAYnC,GACV,IAAK,MAAMqb,KAAXhiC,sBAAA46B,EAAiB7hC,MACXipC,IAAOrb,GACTqb,EAAGxT,WAGPxuB,sBAAA46B,EAAA7hC,MAAsBkb,QAEtBjU,sBAAA46B,EAAA7hC,MAAsB2Y,IAAIiV,GAC1BA,EAAO2H,SACP1e,kBAAAisB,GAAA9iC,KAAAwnC,IAAAnlC,KAAArC,KAAuB4tB,EAAOqB,oBAC9BpY,kBAAAisB,GAAA9iC,KAAAonC,IAAA/kC,KAAArC,KAA2B,CACzBwkC,mBAAmB,GAZH,CAoBpBhK,UAAAA,CAAW5M,GACT,OAAO3mB,sBAAA46B,EAAA7hC,MAAsBse,IAAIsP,EADhB,CAQnB6H,QAAAA,CAAS7H,GACPA,EAAO6H,WACPxuB,sBAAA46B,EAAA7hC,MAAsBiY,OAAO2V,GAC7B/W,kBAAAisB,GAAA9iC,KAAAonC,IAAA/kC,KAAArC,KAA2B,CACzBwkC,kBAAmBxkC,KAAKgmC,cAJX,CAQjB,gBAAIA,GACF,OAAsC,IAA/B/+B,sBAAA46B,EAAA7hC,MAAsB6Z,IADZ,CAOnBse,IAAAA,GACElxB,sBAAAg6B,EAAAjhC,MAAqBm4B,OACrBthB,kBAAAisB,GAAA9iC,KAAAonC,IAAA/kC,KAAArC,KAA2B,CACzBi/B,mBAAoBh4B,sBAAAg6B,EAAAjhC,MAAqBi/B,qBACzCC,oBAAoB,EACpB5O,QAAAzZ,kBAAAisB,GAAS9iC,KAAAqnC,IAAAhlC,KAAArC,OALN,CAYPg/B,IAAAA,GACE/3B,sBAAAg6B,EAAAjhC,MAAqBg/B,OACrBnoB,kBAAAisB,GAAA9iC,KAAAonC,IAAA/kC,KAAArC,KAA2B,CACzBi/B,oBAAoB,EACpBC,mBAAoBj4B,sBAAAg6B,EAAAjhC,MAAqBk/B,qBACzC5O,QAAAzZ,kBAAAisB,GAAS9iC,KAAAqnC,IAAAhlC,KAAArC,OALN,CAaPwvB,WAAAA,CAAYniB,GACVpG,sBAAAg6B,EAAAjhC,MAAqB2Y,IAAItL,GACzBwJ,kBAAAisB,GAAA9iC,KAAAonC,IAAA/kC,KAAArC,KAA2B,CACzBi/B,oBAAoB,EACpBC,oBAAoB,EACpB5O,QAAAzZ,kBAAAisB,GAAS9iC,KAAAqnC,IAAAhlC,KAAArC,OALO,CA0BpBiY,SAEE,GADAjY,KAAKqwB,kBACArwB,KAAKgmC,aACR,OAGF,MAAMU,EAAU,IAACz/B,sBAAA46B,EAAG7hC,OAYpBA,KAAKwvB,YAAY,CAAE0I,IAXPA,KACV,IAAK,MAAMtK,KAAU8Y,EACnB9Y,EAAOxE,QADqB,EAUR+O,KANXA,KACX,IAAK,MAAMvK,KAAU8Y,EACnB7vB,kBAAAisB,GAAA9iC,KAAA8mC,IAAAzkC,KAAArC,KAAuB4tB,EADK,EAKFwK,UAAU,GAlBjC,CAqBT/H,cAAAA,GAAiB,IAAA6Y,EAEf,QAAAA,EAAAjiC,sBAAA25B,EAAA5gC,aAAA,IAAAkpC,GAAAA,EAAoB7Y,gBAFL,CAKjB8S,qBAAAA,GACE,OAAOl8B,sBAAA25B,EAAA5gC,OAAsBA,KAAKgmC,YADZ,CAuBxBxC,SAAAA,GACE,IAAK,MAAM5V,KAAX3mB,sBAAA46B,EAAqB7hC,MACnB4tB,EAAO2C,SAET1Z,kBAAAisB,GAAA9iC,KAAA+mC,IAAA1kC,KAAArC,KAAoBiH,sBAAA45B,EAAA7gC,MAAiB8a,SAJ3B,CAUZ2oB,WAAAA,GACE,GAAAx8B,sBAAA25B,EAAI5gC,MAEFiH,sBAAA25B,EAAA5gC,MAAmBqwB,sBAIrB,GAAKrwB,KAAKgmC,aAAV,CAGA,IAAK,MAAMpY,KAAX3mB,sBAAA46B,EAAqB7hC,MACnB4tB,EAAO6H,WAETxuB,sBAAA46B,EAAA7hC,MAAsBkb,QACtBrE,kBAAAisB,GAAA9iC,KAAAonC,IAAA/kC,KAAArC,KAA2B,CACzBwkC,mBAAmB,GARG,CAPZ,CAmBdd,wBAAAA,CAAyBxW,EAAGC,GAI1B,GAJ6B/hC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,IAE3B4U,KAAKqwB,kBAEFrwB,KAAKgmC,aACR,OAGF/+B,sBAAAy7B,EAAA1iC,MAAkB,IAAMktB,EACxBjmB,sBAAAy7B,EAAA1iC,MAAkB,IAAMmtB,EACxB,MAAOgc,EAAQC,GAATniC,sBAAAy7B,EAAmB1iC,MACnB0mC,EAAU,IAACz/B,sBAAA46B,EAAG7hC,OAMpBiH,sBAAA07B,GAAI3iC,OACFmX,aAAAlQ,sBAAA07B,GAAa3iC,OAGf8G,sBAAA67B,GAAA3iC,KAA6Bkc,YAAW,KACtCpV,sBAAA67B,GAAA3iC,KAA6B,MAC7BiH,sBAAAy7B,EAAA1iC,MAAkB,GAAKiH,sBAAAy7B,EAAA1iC,MAAkB,GAAK,EAE9CA,KAAKwvB,YAAY,CACf0I,IAAKA,KACH,IAAK,MAAMtK,KAAU8Y,EACfz/B,sBAAA45B,EAAA7gC,MAAiBse,IAAIsP,EAAO3b,KAC9B2b,EAAOkD,gBAAgBqY,EAAQC,EAFL,EAMhCjR,KAAMA,KACJ,IAAK,MAAMvK,KAAU8Y,EACfz/B,sBAAA45B,EAAA7gC,MAAiBse,IAAIsP,EAAO3b,KAC9B2b,EAAOkD,iBAAiBqY,GAASC,EAFP,EAMhChR,UAAU,GAfZ,GAVmB,MA6BrB,IAAK,MAAMxK,KAAU8Y,EACnB9Y,EAAOkD,gBAAgB5D,EAAGC,EA7CmB,CAoDjDuN,gBAAAA,GAGE,GAAK16B,KAAKgmC,aAAV,CAIAhmC,KAAK0lC,mBAAkB,GACvB5+B,sBAAAs6B,EAAAphC,KAAwB,IAAI3R,KAC5B,IAAK,MAAMu/B,KAAX3mB,sBAAA46B,EAAqB7hC,MACnBiH,sBAAAm6B,EAAAphC,MAAsBiX,IAAI2W,EAAQ,CAChC0J,OAAQ1J,EAAOV,EACfqK,OAAQ3J,EAAOT,EACfkc,eAAgBzb,EAAO7Z,UACvB+jB,KAAM,EACNC,KAAM,EACNuR,cAAe,GAbK,CAHP,CAyBnB1O,cAAAA,GACE,IAAI3zB,sBAAAm6B,EAACphC,MACH,OAAO,EAETA,KAAK0lC,mBAAkB,GACvB,MAAM92C,EAAAqY,sBAAAm6B,EAAMphC,MACZ8G,sBAAAs6B,EAAAphC,KAAwB,MACxB,IAAIupC,GAAyB,EAE7B,IAAK,OAAO,EAAErc,EAAF,EAAKC,EAAL,UAAQpZ,GAAa9kB,KAAUL,EACzCK,EAAM6oC,KAAO5K,EACbj+B,EAAM8oC,KAAO5K,EACbl+B,EAAMq6C,aAAev1B,EACrBw1B,IAAAA,EACErc,IAAMj+B,EAAMqoC,QACZnK,IAAMl+B,EAAMsoC,QACZxjB,IAAc9kB,EAAMo6C,gBAGxB,IAAKE,EACH,OAAO,EAGT,MAAMC,EAAOA,CAAC5b,EAAQV,EAAGC,EAAGpZ,KAC1B,GAAI9M,sBAAA45B,EAAA7gC,MAAiBse,IAAIsP,EAAO3b,IAAK,CAInC,MAAMyY,EAASzjB,sBAAA65B,EAAA9gC,MAAgBrR,IAAIolB,GAC/B2W,EACFkD,EAAOsG,sBAAsBxJ,EAAQwC,EAAGC,IAExCS,EAAO7Z,UAAYA,EACnB6Z,EAAOV,EAAIA,EACXU,EAAOT,EAAIA,EAVsB,GA6BvC,OAdAntB,KAAKwvB,YAAY,CACf0I,IAAKA,KACH,IAAK,MAAOtK,GAAQ,KAAEkK,EAAF,KAAQC,EAAR,aAAcuR,MAAmB16C,EACnD46C,EAAK5b,EAAQkK,EAAMC,EAAMuR,EAD+B,EAI5DnR,KAAMA,KACJ,IAAK,MAAOvK,GAAQ,OAAE0J,EAAF,OAAUC,EAAV,eAAkB8R,MAAqBz6C,EACzD46C,EAAK5b,EAAQ0J,EAAQC,EAAQ8R,EADiC,EAIlEjR,UAAU,KAGL,CArDQ,CA6DjBuC,mBAAAA,CAAoBlK,EAAIC,GACtB,GAAIzpB,sBAAAm6B,EAACphC,MAGL,IAAK,MAAM4tB,KAAU3mB,sBAAAm6B,EAAAphC,MAAsB9Q,OACzC0+B,EAAOqD,KAAKR,EAAIC,EALQ,CAc5BoE,OAAAA,CAAQlH,GACN,GAAsB,OAAlBA,EAAOlD,OAAiB,CAC1B,MAAMA,EAAS1qB,KAAKynC,SAAS7Z,EAAO7Z,WAChC2W,GACFA,EAAOyJ,aAAavG,GACpBlD,EAAO+e,aAAa7b,KAEpB5tB,KAAK4oC,UAAUhb,GACf5tB,KAAKguB,uBAAuBJ,GAC5BA,EAAOkH,UARiB,MAW1BlH,EAAOlD,OAAO+e,aAAa7b,EAZf,CAqBhB8b,QAAAA,CAAS9b,GACP,OAAO3mB,sBAAA25B,EAAA5gC,QAAuB4tB,CADf,CAQjBqZ,SAAAA,GACE,OAAAhgC,sBAAA25B,EAAO5gC,KADG,CAQZ2pC,OAAAA,GACE,OAAA1iC,sBAAA26B,EAAO5hC,KADC,CAIV,gBAAI4pC,GACF,OAAO,EAAAziC,EAAA3H,QAAOQ,KAAM,eAAgB,IAAI87B,EADvB,EAlsCW,SAAAqL,KAwT5B39C,OAAOR,iBAAiB,QAAxBie,sBAAA+6B,EAAiChiC,OACjCxW,OAAOR,iBAAiB,OAAxBie,sBAAA86B,EAAgC/hC,MAFf,UAAA6kC,KAMjBr7C,OAAOszB,oBAAoB,QAA3B7V,sBAAA+6B,EAAoChiC,OACpCxW,OAAOszB,oBAAoB,OAA3B7V,sBAAA86B,EAAmC/hC,MAFf,UAAAqmC,KA0CpB78C,OAAOR,iBAAiB,UAAxBie,sBAAAm7B,EAAmCpiC,MAAoB,CAAEizB,SAAS,GAH9C,UAAA2R,KAOpBp7C,OAAOszB,oBAAoB,UAA3B7V,sBAAAm7B,EAAsCpiC,MAAoB,CACxDizB,SAAS,GAFY,UAAAqT,KAOvBt+C,SAASgB,iBAAiB,OAA1Bie,sBAAAg7B,EAAkCjiC,OAClChY,SAASgB,iBAAiB,MAA1Bie,sBAAAi7B,EAAiCliC,OACjChY,SAASgB,iBAAiB,QAA1Bie,sBAAAk7B,EAAmCniC,MAHZ,UAAAwmC,KAOvBx+C,SAAS80B,oBAAoB,OAA7B7V,sBAAAg7B,EAAqCjiC,OACrChY,SAAS80B,oBAAoB,MAA7B7V,sBAAAi7B,EAAoCliC,OACpChY,SAAS80B,oBAAoB,QAA7B7V,sBAAAk7B,EAAsCniC,MAHZ,UAAAonC,GA8INvmC,GACD/R,OAAO26B,QAAQ5oB,GAAS/Z,MACzC+iD,IAAA,IAAE76C,EAAKC,GAAP46C,EAAA,OAAkB5iC,sBAAAw7B,EAAAziC,MAAqBhR,KAASC,CAD/B,KAKjB+Q,KAAKi6B,UAAUC,SAAS,gCAAiC,CACvD1rB,OAAQxO,KACRa,QAAS/R,OAAO4rB,OAAPzT,sBAAAw7B,EAAcziC,MAAsBa,IARpB,UAAA2mC,GAab3mC,GAChBb,KAAKi6B,UAAUC,SAAS,gCAAiC,CACvD1rB,OAAQxO,KACRa,WAHuB,UAAAsnC,KAiLzB,IAAIlhC,sBAAAw6B,EAACzhC,MAAiB,CACpB8G,sBAAA26B,EAAAzhC,MAAkB,GAClB,IAAK,MAAM+kC,KAAS99B,sBAAA65B,EAAA9gC,MAAgB8a,SAClCiqB,EAAM6C,QAHY,CADX,UAAAM,KAcX,GADAloC,KAAKyjC,cACLx8B,sBAAAw6B,EAAIzhC,MAAiB,CACnB8G,sBAAA26B,EAAAzhC,MAAkB,GAClB,IAAK,MAAM+kC,KAAS99B,sBAAA65B,EAAA9gC,MAAgB8a,SAClCiqB,EAAM8C,SAHW,CAFT,UAAAf,GAwFIlZ,GAChB,MAAMmX,EAAQ99B,sBAAA65B,EAAA9gC,MAAgBrR,IAAIi/B,EAAO7Z,WACrCgxB,EACFA,EAAM0E,aAAa7b,GAEnB5tB,KAAK4oC,UAAUhb,EALO,UAAAyZ,KA+HxB,GAA8B,IAA1BpgC,sBAAA45B,EAAA7gC,MAAiB6Z,KACnB,OAAO,EAGT,GAA8B,IAA1B5S,sBAAA45B,EAAA7gC,MAAiB6Z,KACnB,IAAK,MAAM+T,KAAU3mB,sBAAA45B,EAAA7gC,MAAiB8a,SACpC,OAAO8S,EAAO0C,UAIlB,OAAO,CAXE,UAAAyW,GAmDIL,GACbz/B,sBAAA46B,EAAA7hC,MAAsBkb,QACtB,IAAK,MAAM0S,KAAU8Y,EACf9Y,EAAO0C,YAGXrpB,sBAAA46B,EAAA7hC,MAAsB2Y,IAAIiV,GAC1BA,EAAO2H,UAET1e,kBAAAisB,GAAA9iC,KAAAonC,IAAA/kC,KAAArC,KAA2B,CAAEwkC,mBAAmB,GAT1B,CAAAzY,gBAr9BpBgX,GAAN,kBA2E2B,GAAzBhX,gBA3EIgX,GAAN,gBA6EyB,IArlBzB/8C,EAAA+8C,0BAAAA,4RCszBA,SAAoBliC,GAClBvX,QAAQsE,IAAI,yBAA2BiT,EADZ,mBAmI7B,SAAwBo/B,GACtB,MAAM6J,EAAO9hD,SAASG,cAAc,QACpC2hD,EAAKxhD,MAAMyhD,WAAa,SACxB/hD,SAAS4B,KAAKupC,OAAO2W,GACrB,IAAK,MAAMtjD,KAAQy5C,EAAO/wC,OAAQ,CAChC46C,EAAKxhD,MAAM83C,MAAQ55C,EACnB,MAAMwjD,EAAgBxgD,OAAO8kC,iBAAiBwb,GAAM1J,MACpDH,EAAOhpB,IAAIzwB,EAAM85C,EAAO0J,GAHQ,CAKlCF,EAAK1gB,QATyB,wBAYhC,SAA6B6S,GAC3B,MAAM,EAAEl4B,EAAF,EAAKnB,EAAL,EAAQoB,EAAR,EAAWV,EAAX,EAAcra,EAAd,EAAiBghD,GAAMhO,EAAIiO,eACjC,MAAO,CAACnmC,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,EAFS,+BAKlC,SAAoChO,GAClC,MAAM,EAAEl4B,EAAF,EAAKnB,EAAL,EAAQoB,EAAR,EAAWV,EAAX,EAAcra,EAAd,EAAiBghD,GAAMhO,EAAIiO,eAAeC,aAChD,MAAO,CAACpmC,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,EAFgB,uBAxRzC,SAA4B/+C,GAI1B,OAJ+BE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,MAE5BF,GAAOA,EAAI5E,MAAM,OAAQ,IAErB4E,EAAIk/C,UAAUl/C,EAAIm/C,YAAY,KAAO,EAJU,0BAcxD,SAA+Bn/C,GAAuC,IAAlCo/C,EAAAl/C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAkB,eACpD,GAAmB,kBAARF,EACT,OAAOo/C,EAET,GAAIhgC,EAAapf,GAEf,OADA,EAAAic,EAAA5d,MAAK,sEACE+gD,EAET,MAGMC,EAAa,gCACbC,EAJQ,sDAIS/K,KAAKv0C,GAC5B,IAAIu/C,EACFF,EAAW9K,KAAK+K,EAAS,KACzBD,EAAW9K,KAAK+K,EAAS,KACzBD,EAAW9K,KAAK+K,EAAS,IAC3B,GAAIC,IACFA,EAAoBA,EAAkB,GAClCA,EAAkB1oC,SAAS,MAE7B,IACE0oC,EAAoBF,EAAW9K,KAC7Bt5B,mBAAmBskC,IACnB,EAHA,CAIF,MAAO,CAOb,OAAOA,GAAqBH,CAhCwC,kCAgNtE,SAA4BI,EAA5BC,GAAkE,IAA7B,MAAE31B,EAAQ,EAAV,SAAaC,EAAW,GAA7D01B,EACE,MAAM,MAAEpmB,EAAF,OAASC,GAAWkmB,EAAQE,WAAWtiD,MACvCgtB,EAAU,CAAC,EAAG,EAAGu1B,SAAStmB,GAAQsmB,SAASrmB,IAEjD,OAAO,IAAInP,EAAa,CACtBC,UACAN,QACAC,YAP8D,+BAxOlE,SAAmB6P,GACjB,MAA2B,kBAAbA,GAAyB,UAAUz6B,KAAKy6B,EAD3B,mCA2H7B,SAAoB1b,GAAkC,IAA7B0hC,EAAA1/C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACvB,OAAO,IAAIsb,SAAQ,CAACC,EAASC,KAC3B,MAAMmkC,EAAS/iD,SAASG,cAAc,UACtC4iD,EAAO3hC,IAAMA,EAEb2hC,EAAOhN,OAAS,SAAUlc,GACpBipB,GACFC,EAAO3hB,SAETziB,EAAQkb,EAJqB,EAM/BkpB,EAAO9M,QAAU,WACfr3B,EAAO,IAAI3c,MAAJ,0BAAA0B,OAAoCo/C,EAAO3hC,MADvB,GAG5BphB,SAASgjD,MAAQhjD,SAASumC,iBAAiB4E,OAAO4X,EAAnD,GAdkD,kBATtD,SAAuB9hD,GACrBA,EAAEG,gBADsB,uBA2L1B,SACE4iC,EACA3V,GAGA,IAFA40B,EAAA7/C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACA8/C,IAAA9/C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAEA,GAAIirB,aAAoBhB,EAAc,CACpC,MAAM,UAAEoX,EAAF,WAAaC,GAAerW,EAASmW,SACrC,MAAElkC,GAAU0jC,EACZmf,EAAWhkC,EAAA/F,YAAYY,oBAEvB82B,EAAA,yBAAAntC,OAA6B8gC,EAAU,MAC3CsM,EAAA,yBAAAptC,OAA6B+gC,EAAW,MACpC0e,EAAWD,EAAA,SAAAx/C,OAAoBmtC,EAAI,UAAF,QAAAntC,OAAkBmtC,EAAE,KACzDuS,EAAYF,EAAA,SAAAx/C,OAAoBotC,EAAI,UAAF,QAAAptC,OAAkBotC,EAAE,KAEnDkS,GAAY50B,EAASpB,SAAW,MAAQ,GAI3C3sB,EAAMi8B,MAAQ8mB,EACd/iD,EAAMk8B,OAAS4mB,IAJf9iD,EAAMi8B,MAAQ6mB,EACd9iD,EAAMk8B,OAAS6mB,EAZmB,CAmBlCH,GACFlf,EAAI6G,aAAa,qBAAsBxc,EAASpB,SArBlD,EA38BF,IAAAq2B,EAAAlkC,EAAA,GAOAD,EAAAC,EAAA,GASA,MAAMmkC,EAAS,6BAEf,MAAM7G,GAAc8G,EAAd9G,EAAN3Y,gBAAM2Y,EAAN,MACe,IAAb3Y,gBADI2Y,EAAN,MAGe,IAAb3Y,gBAHI2Y,EAAN,mBAK4B8G,EAAKrpC,IAAMqpC,EAAKC,KAtC5CzlD,EAAA0+C,cAAAA,EAAA,IAAAgH,EAAA,IAAAplC,QAAAqlC,EAAA,IAAArlC,QAAAslC,EAAA,IAAAtlC,QAAAulC,EAAA,IAAAvlC,QAAAwlC,EAAA,IAAAxlC,QAAAylC,EAAA,IAAAzlC,QAAA0lC,EAAA,IAAA1lC,QAAA2lC,EAAA,IAAA3lC,QAAA4lC,EAAA,IAAA5lC,QAAA6lC,EAAA,IAAA7lC,QAAA8lC,EAAA,IAAA9lC,QAAA+lC,EAAA,IAAAx4B,QAkDA,MAAM9K,UAAyBuiC,EAAAgB,kBAuB7BrsC,WAAAA,GAAiE,IAArD,MAAEyJ,EAAF,cAASyB,EAAgBrgB,WAAW9C,UAApCoD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiD,CAAC,EAC5DuV,QAAAsT,4BAAA,KAAAo4B,GAAA7lC,2BAAA,KAAAklC,OAAA,GAAAllC,2BAAA,KAAAmlC,OAAA,GAAAnlC,2BAAA,KAAAolC,OAAA,GAAAplC,2BAAA,KAAAqlC,OAAA,GAAArlC,2BAAA,KAAAslC,OAAA,GAAAtlC,2BAAA,KAAAulC,OAAA,GAAAvlC,2BAAA,KAAAwlC,OAAA,GAAAxlC,2BAAA,KAAAylC,OAAA,GAAAzlC,2BAAA,KAAA0lC,OAAA,GAAA1lC,2BAAA,KAAA2lC,OAAA,GAAA3lC,2BAAA,KAAA4lC,EAHI,GAIJtlC,sBAAA8kC,EAAA5rC,KAAc0J,GACd5C,sBAAA+kC,EAAA7rC,KAAiBmL,EAH8C,CAgCjEohC,SAAAA,CAAUC,GAAM,IAAAC,EAAAC,EACd,IAAKF,EACH,MAAO,OAKT,IAKIG,EAAQC,EAAQC,EAAQ79C,EALxBC,EAAQ69C,oBAAAT,EAAArsC,KAAA+sC,GAAYp+C,IAAI69C,GAC5B,GAAIv9C,EACF,OAAOA,EAIT,GAAoB,IAAhBu9C,EAAKnhD,OAAc,CACrB,MAAM2hD,EAAOR,EAAK,GACZ58C,EAAS,IAAIxJ,MAAM,KACzB,IAAK,IAAIgH,EAAI,EAAGA,EAAI,IAAKA,IACvBwC,EAAOxC,GAAK4/C,EAAK5/C,GAAK,IAExB4B,EAAM29C,EAASC,EAASC,EAASj9C,EAAOhD,KAAK,IANxB,KAOhB,CACL,MAAOogD,EAAMC,EAAMC,GAAQV,EACrBW,EAAU,IAAI/mD,MAAM,KACpBgnD,EAAU,IAAIhnD,MAAM,KACpBinD,EAAU,IAAIjnD,MAAM,KAC1B,IAAK,IAAIgH,EAAI,EAAGA,EAAI,IAAKA,IACvB+/C,EAAQ//C,GAAK4/C,EAAK5/C,GAAK,IACvBggD,EAAQhgD,GAAK6/C,EAAK7/C,GAAK,IACvBigD,EAAQjgD,GAAK8/C,EAAK9/C,GAAK,IAEzBu/C,EAASQ,EAAQvgD,KAAK,KACtBggD,EAASQ,EAAQxgD,KAAK,KACtBigD,EAASQ,EAAQzgD,KAAK,KACtBoC,EAAA,GAAArD,OAASghD,GAAHhhD,OAAYihD,GAAZjhD,OAAqBkhD,EAbtB,CAiBP,GADA59C,EAAQ69C,oBAAAT,EAAArsC,KAAA+sC,GAAYp+C,IAAIK,GACpBC,EAEF,OADA69C,oBAAAT,EAAArsC,KAAA+sC,GAAY91B,IAAIu1B,EAAMv9C,GACfA,EAMT,MAAMgjB,EAAA,KAAAtmB,OAAAsb,sBAAA2kC,EAAU5rC,MAAA,kBAAArU,QAAAmb,sBAAAslC,EAA4BpsC,MAAAysC,EAAAxlC,sBAAAmlC,EAAApsC,MAAA0sC,EAAAD,IAAAA,IAAAC,IACtCxhD,EAAA,QAAAS,OAAcsmB,EAAG,KACvB66B,oBAAAT,EAAArsC,KAAA+sC,GAAY91B,IAAIu1B,EAAMthD,GACtB4hD,oBAAAT,EAAArsC,KAAA+sC,GAAY91B,IAAIjoB,EAAK9D,GAErB,MAAMoiD,EAAAz2B,kBAAAw1B,EAASrsC,KAAAutC,GAAAlrC,KAAArC,KAAmBiS,GAGlC,OAFA4E,kBAAAw1B,EAAArsC,KAAAwtC,GAAAnrC,KAAArC,KAA+B2sC,EAAQC,EAAQC,EAAQS,GAEhDpiD,CArDO,CAwDhB+5C,YAAAA,CAAawI,EAASC,GAAS,IAAAC,EAC7B,MAAM3+C,EAAA,GAAArD,OAAS8hD,EAAQ,KAAA9hD,OAAG+hD,GAC1B,GAAIzmC,sBAAA8kC,EAAA/rC,QAAiBhR,EACnB,OAAAiY,sBAAA+kC,EAAOhsC,MAOT,GAJA8G,sBAAAilC,EAAA/rC,KAAehR,GACf8X,sBAAAklC,EAAAhsC,KAAe,QACf,QAAA2tC,EAAA1mC,sBAAA6kC,EAAA9rC,aAAA,IAAA2tC,GAAAA,EAAiBvkB,UAEZqkB,IAAYC,EACf,OAAAzmC,sBAAA+kC,EAAOhsC,MAGT,MAAM4tC,EAAA/2B,kBAAAw1B,EAAQrsC,KAAA6tC,GAAAxrC,KAAArC,KAAaytC,GAC3BA,EAAUtmC,EAAA3E,KAAKC,gBAAgBmrC,GAC/B,MAAME,EAAAj3B,kBAAAw1B,EAAQrsC,KAAA6tC,GAAAxrC,KAAArC,KAAa0tC,GAI3B,GAHAA,EAAUvmC,EAAA3E,KAAKC,gBAAgBqrC,GAC/BhB,oBAAAT,EAAArsC,KAAA+tC,GAAWzlD,MAAM83C,MAAQ,GAGV,YAAZqN,GAAqC,YAAZC,GAC1BD,IAAYC,EAEZ,OAAAzmC,sBAAA+kC,EAAOhsC,MAYT,MAAMpR,EAAM,IAAIxI,MAAM,KACtB,IAAK,IAAIgH,EAAI,EAAGA,GAAK,IAAKA,IAAK,CAC7B,MAAM8/B,EAAI9/B,EAAI,IACdwB,EAAIxB,GAAK8/B,GAAK,OAAUA,EAAI,QAAUA,EAAI,MAAS,QAAU,GAFhC,CAI/B,MAAM8gB,EAAQp/C,EAAIhC,KAAK,KAEjBqlB,EAAA,KAAAtmB,OAAAsb,sBAAA2kC,EAAU5rC,MAAA,eACVstC,EAAAxmC,sBAAAmlC,EAAUjsC,KAAA6W,kBAAAw1B,EAA2BrsC,KAAAutC,GAAAlrC,KAAArC,KAAmBiS,IAC9D4E,kBAAAw1B,EAAArsC,KAAAwtC,GAAAnrC,KAAArC,KAA+BguC,EAAOA,EAAOA,EAAOV,GACpDz2B,kBAAAw1B,EAAArsC,KAAAiuC,GAAA5rC,KAAArC,KAAwBstC,GAExB,MAAMY,EAAWA,CAAClqC,EAAGzB,KACnB,MAAM4rC,EAAQP,EAAM5pC,GAAK,IACnB4M,EAAMk9B,EAAM9pC,GAAK,IACjBoqC,EAAM,IAAIhoD,MAAMmc,EAAI,GAC1B,IAAK,IAAInV,EAAI,EAAGA,GAAKmV,EAAGnV,IACtBghD,EAAIhhD,GAAK+gD,EAAS/gD,EAAImV,GAAMqO,EAAMu9B,GAEpC,OAAOC,EAAIxhD,KAAK,IAAhB,EAUF,OARAiqB,kBAAAw1B,EAAArsC,KAAAwtC,GAAAnrC,KAAArC,KACEkuC,EAAS,EAAG,GACZA,EAAS,EAAG,GACZA,EAAS,EAAG,GACZZ,GAGFxmC,sBAAAklC,EAAAhsC,KAAA,QAAArU,OAAuBsmB,EAAG,MAC1BhL,sBAAA+kC,EAAOhsC,KAjEsB,CAoE/BquC,qBAAAA,CAAsBZ,EAASC,EAASY,EAAYC,GAAY,IAAAC,EAC9D,MAAMx/C,EAAA,GAAArD,OAAS8hD,EAAQ,KAAA9hD,OAAG+hD,EAAQ,KAAA/hD,OAAG2iD,EAAW,KAAA3iD,OAAG4iD,GACnD,GAAItnC,sBAAAilC,EAAAlsC,QAA0BhR,EAC5B,OAAAiY,sBAAAklC,EAAOnsC,MAOT,GAJA8G,sBAAAolC,EAAAlsC,KAAwBhR,GACxB8X,sBAAAqlC,EAAAnsC,KAAwB,QACxB,QAAAwuC,EAAAvnC,sBAAAglC,EAAAjsC,aAAA,IAAAwuC,GAAAA,EAA0BplB,UAErBqkB,IAAYC,EACf,OAAAzmC,sBAAAklC,EAAOnsC,MAGT,MAAO4tC,EAAOE,GAAS,CAACL,EAASC,GAAS9+C,IAAIioB,kBAAAw1B,EAAArsC,KAAA6tC,GAAa5pB,KAAKjkB,OAChE,IAAIyuC,EAASphD,KAAK6kC,MAChB,MAAS0b,EAAM,GAAK,MAASA,EAAM,GAAK,MAASA,EAAM,IAErDc,EAASrhD,KAAK6kC,MAChB,MAAS4b,EAAM,GAAK,MAASA,EAAM,GAAK,MAASA,EAAM,KAEpDa,EAAUC,GAAY,CAACN,EAAYC,GAAY3/C,IAClDioB,kBAAAw1B,EAAArsC,KAAA6tC,GAAa5pB,KAAKjkB,OAEhB0uC,EAASD,KACVA,EAAQC,EAAQC,EAAUC,GAAY,CACrCF,EACAD,EACAG,EACAD,IAGJ7B,oBAAAT,EAAArsC,KAAA+tC,GAAWzlD,MAAM83C,MAAQ,GAezB,MAAM8N,EAAWA,CAACW,EAAIC,EAAIvsC,KACxB,MAAM6rC,EAAM,IAAIhoD,MAAM,KAChB2oD,GAAQL,EAASD,GAAUlsC,EAC3BysC,EAAWH,EAAK,IAChBI,GAAWH,EAAKD,IAAO,IAAMtsC,GACnC,IAAI2sC,EAAO,EACX,IAAK,IAAI9hD,EAAI,EAAGA,GAAKmV,EAAGnV,IAAK,CAC3B,MAAM+hD,EAAI9hD,KAAK6kC,MAAMuc,EAASrhD,EAAI2hD,GAC5B9/C,EAAQ+/C,EAAW5hD,EAAI6hD,EAC7B,IAAK,IAAIhpC,EAAIipC,EAAMjpC,GAAKkpC,EAAGlpC,IACzBmoC,EAAInoC,GAAKhX,EAEXigD,EAAOC,EAAI,CANgB,CAQ7B,IAAK,IAAI/hD,EAAI8hD,EAAM9hD,EAAI,IAAKA,IAC1BghD,EAAIhhD,GAAKghD,EAAIc,EAAO,GAEtB,OAAOd,EAAIxhD,KAAK,IAAhB,EAGIqlB,EAAA,KAAAtmB,OAAAsb,sBAAA2kC,EAAU5rC,MAAA,yBACVstC,EAAAxmC,sBAAAmlC,EAAUjsC,KAAA6W,kBAAAw1B,EAA2BrsC,KAAAutC,GAAAlrC,KAAArC,KAAmBiS,IAW9D,OATA4E,kBAAAw1B,EAAArsC,KAAAiuC,GAAA5rC,KAAArC,KAAwBstC,GACxBz2B,kBAAAw1B,EAAArsC,KAAAwtC,GAAAnrC,KAAArC,KACEkuC,EAASS,EAAS,GAAIC,EAAS,GAAI,GACnCV,EAASS,EAAS,GAAIC,EAAS,GAAI,GACnCV,EAASS,EAAS,GAAIC,EAAS,GAAI,GACnCtB,GAGFxmC,sBAAAqlC,EAAAnsC,KAAA,QAAArU,OAAgCsmB,EAAG,MACnChL,sBAAAklC,EAAOnsC,KA/EuD,CAkFhEoP,OAAAA,GAAQhkB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,KACU6b,sBAAA+kC,EAAAhsC,OAAAiH,sBAAAklC,EAAgBnsC,SAGhCiH,sBAAA0kC,EAAI3rC,QACFiH,sBAAA0kC,EAAA3rC,MAAYu6B,WAAWA,WAAWnR,SAClCtiB,sBAAA6kC,EAAA3rC,KAAc,OAEhBiH,sBAAAykC,EAAI1rC,QACFiH,sBAAAykC,EAAA1rC,MAAakb,QACbpU,sBAAA4kC,EAAA1rC,KAAe,OAEjB8G,sBAAAslC,EAAApsC,KAAW,GAZY,EArQsB,SAAA+sC,EAAAqC,GA8B7C,OAAAnoC,sBAAAykC,EAAA0D,IAAAtoC,sBAAA4kC,EAAA0D,EAAyB,IAAI/gD,IADlB,UAAA0/C,EAAAsB,GAKX,IAAIpoC,sBAAA0kC,EAAA0D,GAAc,CAChB,MAAMrjB,EAAM/kB,sBAAA4kC,EAAAwD,GAAelnD,cAAc,QACnC,MAAEG,GAAU0jC,EAClB1jC,EAAMyhD,WAAa,SACnBzhD,EAAMgnD,QAAU,SAChBhnD,EAAMi8B,MAAQj8B,EAAMk8B,OAAS,EAC7Bl8B,EAAME,SAAW,WACjBF,EAAMG,IAAMH,EAAMmpC,KAAO,EACzBnpC,EAAMqnC,QAAU,EAEhB,MAAM4f,EAAMtoC,sBAAA4kC,EAAAwD,GAAeG,gBAAgBjE,EAAQ,OACnDgE,EAAI1c,aAAa,QAAS,GAC1B0c,EAAI1c,aAAa,SAAU,GAC3B/rB,sBAAA6kC,EAAA0D,EAAcpoC,sBAAA4kC,EAAAwD,GAAeG,gBAAgBjE,EAAQ,SACrDvf,EAAImH,OAAOoc,GACXA,EAAIpc,OAAJlsB,sBAAA0kC,EAAA0D,IACApoC,sBAAA4kC,EAAAwD,GAAezlD,KAAKupC,OAAOnH,EAhBX,CAkBlB,OAAA/kB,sBAAA0kC,EAAA0D,EAnBU,UAAApB,EAmPOX,GACjB,MAAMmC,EAAgBxoC,sBAAA4kC,EAAA7rC,MAAewvC,gBACnCjE,EACA,iBAEFkE,EAAc5c,aAAa,OAAQ,UACnC4c,EAAc5c,aACZ,SACA,wFAEFya,EAAOna,OAAOsc,EAVW,UAAAlC,EAabt7B,GACZ,MAAMq7B,EAASrmC,sBAAA4kC,EAAA7rC,MAAewvC,gBAAgBjE,EAAQ,UAKtD,OAJA+B,EAAOza,aAAa,8BAA+B,QACnDya,EAAOza,aAAa,KAAM5gB,GAC1B66B,oBAAAT,EAAArsC,KAAA+tC,GAAW5a,OAAOma,GAEXA,CANS,UAAAoC,EASJC,EAAqBC,EAAM5B,GACvC,MAAM6B,EAAS5oC,sBAAA4kC,EAAA7rC,MAAewvC,gBAAgBjE,EAAQqE,GACtDC,EAAOhd,aAAa,OAAQ,YAC5Bgd,EAAOhd,aAAa,cAAemb,GACnC2B,EAAoBxc,OAAO0c,EAJmB,UAAArC,EAOtBsC,EAAQC,EAAQC,EAAQ1C,GAChD,MAAMqC,EAAsB1oC,sBAAA4kC,EAAA7rC,MAAewvC,gBACzCjE,EACA,uBAEF+B,EAAOna,OAAOwc,GACd94B,kBAAAw1B,EAAArsC,KAAA0vC,GAAArtC,KAAArC,KAAmB2vC,EAAqB,UAAWG,GACnDj5B,kBAAAw1B,EAAArsC,KAAA0vC,GAAArtC,KAAArC,KAAmB2vC,EAAqB,UAAWI,GACnDl5B,kBAAAw1B,EAAArsC,KAAA0vC,GAAArtC,KAAArC,KAAmB2vC,EAAqB,UAAWK,EARK,UAAAnC,EAWlDzN,GAEN,OADA0M,oBAAAT,EAAArsC,KAAA+tC,GAAWzlD,MAAM83C,MAAQA,EAClBE,EAAOhS,iBAAAwe,oBAAAT,EAAiBrsC,KAAA+tC,IAAYtf,iBAAiB,SAF/C,CA9WjBzoC,EAAA+iB,iBAAAA,EAoXA,MAAMN,UAAyB6iC,EAAA2E,kBAC7BhwC,WAAAA,GAA0D,IAA9C,cAAEkL,EAAgBrgB,WAAW9C,UAA7BoD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA0C,CAAC,EACrDuV,QACAX,KAAKod,UAAYjS,CAFuC,CAQ1D+kC,aAAAA,CAAc3rB,EAAOC,GACnB,MAAM6B,EAASrmB,KAAKod,UAAUj1B,cAAc,UAG5C,OAFAk+B,EAAO9B,MAAQA,EACf8B,EAAO7B,OAASA,EACT6B,CAJoB,EAQ/B9X,eAAe4hC,EAAUjlD,GAA2B,IAAtBklD,EAAAhlD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC5B,GAEEugB,EAAgBzgB,EAAKlD,SAAS4jB,SAC9B,CACA,MAAM0xB,QAAiB3Y,MAAMz5B,GAC7B,IAAKoyC,EAASC,GACZ,MAAM,IAAItzC,MAAMqzC,EAASE,YAE3B,OAAO4S,EACH,IAAIljD,iBAAiBowC,EAAS+S,gBAC9B,EAAAlpC,EAAAtX,qBAAoBytC,EAAS/1C,OAPjC,CAWF,OAAO,IAAImf,SAAQ,CAACC,EAASC,KAC3B,MAAM0pC,EAAU,IAAIC,eACpBD,EAAQE,KAAK,MAAOtlD,GAA0B,GAE1CklD,IACFE,EAAQG,aAAe,eAEzBH,EAAQI,mBAAqB,KAC3B,GAAIJ,EAAQK,aAAeJ,eAAeK,KAA1C,CAGA,GAAuB,MAAnBN,EAAQrvC,QAAqC,IAAnBqvC,EAAQrvC,OAAc,CAClD,IAAI4F,EAMJ,GALIupC,GAAgBE,EAAQhT,SAC1Bz2B,EAAO,IAAI3Z,WAAWojD,EAAQhT,WACpB8S,GAAgBE,EAAQO,eAClChqC,GAAO,EAAAM,EAAAtX,eAAcygD,EAAQO,eAE3BhqC,EAEF,YADAF,EAAQE,EARwC,CAYpDD,EAAO,IAAI3c,MAAMqmD,EAAQ9S,YAfuB,CAehD,EAGF8S,EAAQliC,KAAK,KAAb,GAzCgD,CArYpDpoB,EAAAyiB,iBAAAA,EAkbA,MAAMG,UAA6B0iC,EAAAwF,sBAIjCC,UAAAA,CAAW7lD,EAAK8lD,GACd,OAAOb,EAAUjlD,EAA0B8U,KAAKkM,cAAca,MAAKlG,IAC1D,CAAEoqC,SAAUpqC,EAAMmqC,qBAFI,EAtbnChrD,EAAA4iB,qBAAAA,EA6bA,MAAMM,UAAmCoiC,EAAA4F,4BAIvCH,UAAAA,CAAW7lD,GACT,OAAOilD,EAAUjlD,GAA0B,EAD7B,EAjclBlF,EAAAkjB,2BAAAA,EAscA,MAAMioC,UAAsB7F,EAAA8F,eAI1BC,UAAAA,CAAW3qD,GACT,OAAOsB,SAASwnD,gBAAgBjE,EAAQ7kD,EADzB,EA1cnBV,EAAAmrD,cAAAA,EA8eA,MAAM97B,EAIJpV,WAAAA,CAAAqxC,GAOG,IAPS,QACVh8B,EADU,MAEVN,EAFU,SAGVC,EAHU,QAIVC,EAAU,EAJA,QAKVC,EAAU,EALA,SAMVC,GAAW,GANbk8B,EAQEtxC,KAAKsV,QAAUA,EACftV,KAAKgV,MAAQA,EACbhV,KAAKiV,SAAWA,EAChBjV,KAAKkV,QAAUA,EACflV,KAAKmV,QAAUA,EAIf,MAAMo8B,GAAWj8B,EAAQ,GAAKA,EAAQ,IAAM,EACtCk8B,GAAWl8B,EAAQ,GAAKA,EAAQ,IAAM,EAC5C,IAAIm8B,EAASC,EAASC,EAASC,EA0C3BC,EAAeC,EACfvtB,EAAOC,EArCX,OAJAvP,GAAY,IACRA,EAAW,IACbA,GAAY,KAENA,GACN,KAAK,IACHw8B,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,IAAI3nD,MACR,qEAIFmrB,IACFu8B,GAAWA,EACXC,GAAWA,GAKG,IAAZH,GACFI,EAAgBxkD,KAAK0Y,IAAIyrC,EAAUl8B,EAAQ,IAAMN,EAAQE,EACzD48B,EAAgBzkD,KAAK0Y,IAAIwrC,EAAUj8B,EAAQ,IAAMN,EAAQG,EACzDoP,GAASjP,EAAQ,GAAKA,EAAQ,IAAMN,EACpCwP,GAAUlP,EAAQ,GAAKA,EAAQ,IAAMN,IAErC68B,EAAgBxkD,KAAK0Y,IAAIwrC,EAAUj8B,EAAQ,IAAMN,EAAQE,EACzD48B,EAAgBzkD,KAAK0Y,IAAIyrC,EAAUl8B,EAAQ,IAAMN,EAAQG,EACzDoP,GAASjP,EAAQ,GAAKA,EAAQ,IAAMN,EACpCwP,GAAUlP,EAAQ,GAAKA,EAAQ,IAAMN,GAKvChV,KAAKvF,UAAY,CACfg3C,EAAUz8B,EACV08B,EAAU18B,EACV28B,EAAU38B,EACV48B,EAAU58B,EACV68B,EAAgBJ,EAAUz8B,EAAQu8B,EAAUI,EAAU38B,EAAQw8B,EAC9DM,EAAgBJ,EAAU18B,EAAQu8B,EAAUK,EAAU58B,EAAQw8B,GAGhExxC,KAAKukB,MAAQA,EACbvkB,KAAKwkB,OAASA,CA/Eb,CAsFH,WAAIgI,GACF,MAAM,QAAElX,GAAYtV,KACpB,OAAO,EAAAmH,EAAA3H,QAAOQ,KAAM,UAAW,CAC7BysB,UAAWnX,EAAQ,GAAKA,EAAQ,GAChCoX,WAAYpX,EAAQ,GAAKA,EAAQ,GACjCqX,MAAOrX,EAAQ,GACfsX,MAAOtX,EAAQ,IANL,CAedqV,KAAAA,GAMQ,IANF,MACJ3V,EAAQhV,KAAKgV,MADT,SAEJC,EAAWjV,KAAKiV,SAFZ,QAGJC,EAAUlV,KAAKkV,QAHX,QAIJC,EAAUnV,KAAKmV,QAJX,SAKJC,GAAW,GALPhqB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAMF,CAAC,EACH,OAAO,IAAIiqB,EAAa,CACtBC,QAAStV,KAAKsV,QAAQ9R,QACtBwR,QACAC,WACAC,UACAC,UACAC,YAPI,CAqBR28B,sBAAAA,CAAuB7kB,EAAGC,GACxB,OAAOhmB,EAAA3E,KAAKU,eAAe,CAACgqB,EAAGC,GAAIntB,KAAKvF,UADb,CAW7Bu3C,0BAAAA,CAA2BztC,GACzB,MAAM0tC,EAAU9qC,EAAA3E,KAAKU,eAAe,CAACqB,EAAK,GAAIA,EAAK,IAAKvE,KAAKvF,WACvDy3C,EAAc/qC,EAAA3E,KAAKU,eAAe,CAACqB,EAAK,GAAIA,EAAK,IAAKvE,KAAKvF,WACjE,MAAO,CAACw3C,EAAQ,GAAIA,EAAQ,GAAIC,EAAY,GAAIA,EAAY,GAH7B,CAejCC,iBAAAA,CAAkBjlB,EAAGC,GACnB,OAAOhmB,EAAA3E,KAAKa,sBAAsB,CAAC6pB,EAAGC,GAAIntB,KAAKvF,UADzB,EAnpB1BzU,EAAAqvB,aAAAA,EAwpBA,MAAM0G,UAAoC5U,EAAApH,cACxCE,WAAAA,CAAYjV,GAAqB,IAAhBixB,EAAA7wB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAa,EAC5BuV,MAAM3V,EAAK,+BACXgV,KAAKic,WAAaA,CAFa,EAMnC,SAAS3R,EAAapf,GACpB,MAAM+C,EAAK/C,EAAIG,OACf,IAAI+B,EAAI,EACR,KAAOA,EAAIa,GAAwB,KAAlB/C,EAAIkC,GAAGpG,QACtBoG,IAEF,MAAiD,UAA1ClC,EAAIk/C,UAAUh9C,EAAGA,EAAI,GAAGzG,aANN,CA2G3B,SAASglB,EAAgBzgB,EAAKC,GAI5B,IACE,MAAM,SAAEa,GAAab,EAAU,IAAIY,IAAIb,EAAKC,GAAW,IAAIY,IAAIb,GAE/D,MAAoB,UAAbc,GAAqC,WAAbA,CAH7B,CAIF,MACA,OAAO,CADD,CAR6B,CAgDvC,IAAIomD,EAiGJ,SAAS9R,EAAOF,GACd,GAAIA,EAAM50C,WAAW,KAAM,CACzB,MAAM6mD,EAAWxH,SAASzK,EAAM58B,MAAM,GAAI,IAC1C,MAAO,EACO,SAAX6uC,IAAwB,IACb,MAAXA,IAAwB,EACd,IAAXA,EALuB,CAS3B,OAAIjS,EAAM50C,WAAW,QAEZ40C,EACJ58B,MAA0B,GAAI,GAC9Bld,MAAM,KACNsI,KAAIs+B,GAAK2d,SAAS3d,KAGnBkT,EAAM50C,WAAW,SACZ40C,EACJ58B,MAA2B,GAAI,GAC/Bld,MAAM,KACNsI,KAAIs+B,GAAK2d,SAAS3d,KAClB1pB,MAAM,EAAG,KAGd,EAAA2D,EAAA5d,MAAA,8BAAAoC,OAAmCy0C,EAAM,MAClC,CAAC,EAAG,EAAG,GA3BO,CA35BvBp6C,EAAA+1B,4BAAAA,EAAA/1B,EAAAquB,UAmuBA,MAAgBpU,WAAAA,GAAA8rB,gBAAA,eACJj9B,OAAOC,OAAO,OAAxBg9B,gBAAA,aAEQ,GAAR,CAEAnV,IAAAA,CAAKpwB,GACCA,KAAQwZ,KAAKsyC,UACf,EAAAnrC,EAAA5d,MAAA,gCAAAoC,OAAqCnF,IAEvCwZ,KAAKsyC,QAAQ9rD,GAAQ2F,KAAKomD,KAJjB,CAOXj6B,OAAAA,CAAQ9xB,GACAA,KAAQwZ,KAAKsyC,UACjB,EAAAnrC,EAAA5d,MAAA,kCAAAoC,OAAuCnF,IAEzCwZ,KAAKwyC,MAAMpiD,KAAK,CACd5J,OACA2nD,MAAOnuC,KAAKsyC,QAAQ9rD,GACpBoqB,IAAKzkB,KAAKomD,eAGLvyC,KAAKsyC,QAAQ9rD,EAVR,CAad6F,QAAAA,GAEE,MAAMomD,EAAS,GACf,IAAIC,EAAU,EACd,IAAK,MAAM,KAAElsD,KAAUwZ,KAAKwyC,MAC1BE,EAAUrlD,KAAKsW,IAAInd,EAAK6E,OAAQqnD,GAElC,IAAK,MAAM,KAAElsD,EAAF,MAAQ2nD,EAAR,IAAev9B,KAAS5Q,KAAKwyC,MACtCC,EAAOriD,KAAP,GAAAzE,OAAenF,EAAKmsD,OAAOD,GAAS,KAAA/mD,OAAGilB,EAAMu9B,EAAM,SAErD,OAAOsE,EAAO7lD,KAAK,GAVV,GA5vBb5G,EAAA4sD,cA4zBA,MAiBE,mBAAOC,CAAaC,GAClB,IAAKA,GAA0B,kBAAVA,EACnB,OAAO,KAITV,IAAAA,EAAuB,IAAIW,OACzB,6FAiBF,MAAMvS,EAAU4R,EAAmB3S,KAAKqT,GACxC,IAAKtS,EACH,OAAO,KAKT,MAAMwS,EAAOnI,SAASrK,EAAQ,GAAI,IAClC,IAAIyS,EAAQpI,SAASrK,EAAQ,GAAI,IACjCyS,EAAQA,GAAS,GAAKA,GAAS,GAAKA,EAAQ,EAAI,EAChD,IAAIC,EAAMrI,SAASrK,EAAQ,GAAI,IAC/B0S,EAAMA,GAAO,GAAKA,GAAO,GAAKA,EAAM,EACpC,IAAIC,EAAOtI,SAASrK,EAAQ,GAAI,IAChC2S,EAAOA,GAAQ,GAAKA,GAAQ,GAAKA,EAAO,EACxC,IAAIC,EAASvI,SAASrK,EAAQ,GAAI,IAClC4S,EAASA,GAAU,GAAKA,GAAU,GAAKA,EAAS,EAChD,IAAIlvC,EAAS2mC,SAASrK,EAAQ,GAAI,IAClCt8B,EAASA,GAAU,GAAKA,GAAU,GAAKA,EAAS,EAChD,MAAMmvC,EAAwB7S,EAAQ,IAAM,IAC5C,IAAI8S,EAAazI,SAASrK,EAAQ,GAAI,IACtC8S,EAAaA,GAAc,GAAKA,GAAc,GAAKA,EAAa,EAChE,IAAIC,EAAe1I,SAASrK,EAAQ,GAAI,KAAO,EAe/C,OAdA+S,EAAeA,GAAgB,GAAKA,GAAgB,GAAKA,EAAe,EAM1C,MAA1BF,GACFF,GAAQG,EACRF,GAAUG,GACyB,MAA1BF,IACTF,GAAQG,EACRF,GAAUG,GAGL,IAAIpnD,KAAKA,KAAKqnD,IAAIR,EAAMC,EAAOC,EAAKC,EAAMC,EAAQlvC,GA5DhC,qLC9zB7B,IAAAiD,EAAAC,EAAA,GAEA,MAAMklC,EACJrsC,WAAAA,GACMD,KAAKC,cAAgBqsC,IACvB,EAAAnlC,EAAAlc,aAAY,uCAFF,CAMdshD,SAAAA,CAAUC,GACR,MAAO,MADO,CAIhBvH,YAAAA,CAAawI,EAASC,GACpB,MAAO,MADsB,CAI/BW,qBAAAA,CAAsBZ,EAASC,EAASY,EAAYC,GAClD,MAAO,MADuD,CAIhEn/B,OAAAA,GAAyB,EApC3BppB,EAAAsmD,kBAAAA,EAuCA,MAAM2D,EACJhwC,WAAAA,GACMD,KAAKC,cAAgBgwC,IACvB,EAAA9oC,EAAAlc,aAAY,uCAFF,CAMd8D,MAAAA,CAAOw1B,EAAOC,GACZ,GAAID,GAAS,GAAKC,GAAU,EAC1B,MAAM,IAAIv6B,MAAM,uBAElB,MAAMo8B,EAASrmB,KAAKkwC,cAAc3rB,EAAOC,GACzC,MAAO,CACL6B,SACA4D,QAAS5D,EAAO6V,WAAW,MAPT,CAWtBuX,KAAAA,CAAMC,EAAkBnvB,EAAOC,GAC7B,IAAKkvB,EAAiBrtB,OACpB,MAAM,IAAIp8B,MAAM,2BAElB,GAAIs6B,GAAS,GAAKC,GAAU,EAC1B,MAAM,IAAIv6B,MAAM,uBAElBypD,EAAiBrtB,OAAO9B,MAAQA,EAChCmvB,EAAiBrtB,OAAO7B,OAASA,CARI,CAWvCpV,OAAAA,CAAQskC,GACN,IAAKA,EAAiBrtB,OACpB,MAAM,IAAIp8B,MAAM,2BAIlBypD,EAAiBrtB,OAAO9B,MAAQ,EAChCmvB,EAAiBrtB,OAAO7B,OAAS,EACjCkvB,EAAiBrtB,OAAS,KAC1BqtB,EAAiBzpB,QAAU,IATH,CAe1BimB,aAAAA,CAAc3rB,EAAOC,IACnB,EAAArd,EAAAlc,aAAY,0CADe,EAnF/BjF,EAAAiqD,kBAAAA,EAwFA,MAAMa,EACJ7wC,WAAAA,CAAA0zC,GAAqD,IAAzC,QAAExoD,EAAU,KAAZ,aAAkB+gB,GAAe,GAA7CynC,EACM3zC,KAAKC,cAAgB6wC,IACvB,EAAA3pC,EAAAlc,aAAY,4CAEd+U,KAAK7U,QAAUA,EACf6U,KAAKkM,aAAeA,CAL+B,CAQrD,WAAMyY,CAANivB,GAAsB,IAAV,KAAEptD,GAAdotD,EACE,IAAK5zC,KAAK7U,QACR,MAAM,IAAIlB,MACR,2HAIJ,IAAKzD,EACH,MAAM,IAAIyD,MAAM,gCAElB,MAAMiB,EAAM8U,KAAK7U,QAAU3E,GAAQwZ,KAAKkM,aAAe,SAAW,IAC5D8kC,EAAkBhxC,KAAKkM,aACzB/E,EAAAxN,oBAAoBC,OACpBuN,EAAAxN,oBAAoBzH,KAExB,OAAO8N,KAAK+wC,WAAW7lD,EAAK8lD,GAAiB3iC,OAAMtH,IACjD,MAAM,IAAI9c,MAAJ,kBAAA0B,OACcqU,KAAKkM,aAAe,UAAY,GAAG,aAAAvgB,OAAWT,GADlE,GAhBkB,CAyBtB6lD,UAAAA,CAAW7lD,EAAK8lD,IACd,EAAA7pC,EAAAlc,aAAY,uCADmB,EA1HnCjF,EAAA8qD,sBAAAA,EA+HA,MAAMI,EACJjxC,WAAAA,CAAA4zC,GAAgC,IAApB,QAAE1oD,EAAU,MAAxB0oD,EACM7zC,KAAKC,cAAgBixC,IACvB,EAAA/pC,EAAAlc,aAAY,kDAEd+U,KAAK7U,QAAUA,CAJe,CAOhC,WAAMw5B,CAANmvB,GAA0B,IAAd,SAAEhvB,GAAdgvB,EACE,IAAK9zC,KAAK7U,QACR,MAAM,IAAIlB,MACR,6HAIJ,IAAK66B,EACH,MAAM,IAAI76B,MAAM,oCAElB,MAAMiB,EAAA,GAAAS,OAASqU,KAAK7U,SAARQ,OAAkBm5B,GAE9B,OAAO9kB,KAAK+wC,WAAW7lD,GAAKmjB,OAAMtH,IAChC,MAAM,IAAI9c,MAAJ,gCAAA0B,OAA0CT,GAAhD,GAbsB,CAoB1B6lD,UAAAA,CAAW7lD,IACT,EAAAic,EAAAlc,aAAY,uCADE,EA3JlBjF,EAAAkrD,4BAAAA,EAgKA,MAAME,EACJnxC,WAAAA,GACMD,KAAKC,cAAgBmxC,IACvB,EAAAjqC,EAAAlc,aAAY,oCAFF,CAMd8D,MAAAA,CAAOw1B,EAAOC,GAAgC,IAAxBuvB,EAAA3oD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACpB,GAAIm5B,GAAS,GAAKC,GAAU,EAC1B,MAAM,IAAIv6B,MAAM,0BAElB,MAAMslD,EAAMvvC,KAAKqxC,WAAW,WAW5B,OAVA9B,EAAI1c,aAAa,UAAW,OAEvBkhB,IACHxE,EAAI1c,aAAa,QAAjB,GAAAlnC,OAA6B44B,EAAM,OACnCgrB,EAAI1c,aAAa,SAAjB,GAAAlnC,OAA8B64B,EAAO,QAGvC+qB,EAAI1c,aAAa,sBAAuB,QACxC0c,EAAI1c,aAAa,UAAjB,OAAAlnC,OAAmC44B,EAAM,KAAA54B,OAAG64B,IAErC+qB,CAfqC,CAkB9CpnD,aAAAA,CAAczB,GACZ,GAAoB,kBAATA,EACT,MAAM,IAAIuD,MAAM,4BAElB,OAAO+V,KAAKqxC,WAAW3qD,EAJL,CAUpB2qD,UAAAA,CAAW3qD,IACT,EAAAygB,EAAAlc,aAAY,uCADG,EAnMnBjF,EAAAorD,eAAAA,sFCmBA,IAAAjqC,EAAAC,EAAA,GAEA,MAAM4sC,EAAO,WAEPC,EAAY,WACZC,EAAW,MAxBjBluD,EAAAgkC,eA0BA,MACE/pB,WAAAA,CAAYk0C,GACVn0C,KAAKo0C,GAAKD,EAAc,WAAPA,EAAoBH,EACrCh0C,KAAKq0C,GAAKF,EAAc,WAAPA,EAAoBH,CAFrB,CAKlB3pB,MAAAA,CAAOyoB,GACL,IAAIjsC,EAAMxb,EACV,GAAqB,kBAAVynD,EAAoB,CAC7BjsC,EAAO,IAAI3Z,WAA0B,EAAf4lD,EAAMznD,QAC5BA,EAAS,EACT,IAAK,IAAI+B,EAAI,EAAGa,EAAK6kD,EAAMznD,OAAQ+B,EAAIa,EAAIb,IAAK,CAC9C,MAAM6C,EAAO6iD,EAAM3iD,WAAW/C,GAC1B6C,GAAQ,IACV4W,EAAKxb,KAAY4E,GAEjB4W,EAAKxb,KAAY4E,IAAS,EAC1B4W,EAAKxb,KAAmB,IAAP4E,EAN2B,CAHnB,KAYxB,MAAI,EAAAkX,EAAAoC,eAAcupC,GAIvB,MAAM,IAAI7oD,MACR,gFAJF4c,EAAOisC,EAAMtvC,QACbnY,EAASwb,EAAK/Y,UACT,CAOP,MAAMwmD,EAAcjpD,GAAU,EACxBkpD,EAAalpD,EAAuB,EAAdipD,EAEtBE,EAAa,IAAIjzC,YAAYsF,EAAKjX,OAAQ,EAAG0kD,GACnD,IAAIG,EAAK,EACPC,EAAK,EACHN,EAAKp0C,KAAKo0C,GACZC,EAAKr0C,KAAKq0C,GACZ,MAAMM,EAAK,WACTC,EAAK,UACDC,EAASF,MACbG,EAASF,MAEX,IAAK,IAAIxnD,EAAI,EAAGA,EAAIknD,EAAalnD,IACvB,EAAJA,GACFqnD,EAAKD,EAAWpnD,GAChBqnD,EAAOA,EAAKE,EAAMV,EAAeQ,EAAKI,EAAUX,EAChDO,EAAMA,GAAM,GAAOA,IAAO,GAC1BA,EAAOA,EAAKG,EAAMX,EAAeQ,EAAKK,EAAUZ,EAChDE,GAAMK,EACNL,EAAMA,GAAM,GAAOA,IAAO,GAC1BA,EAAU,EAALA,EAAS,aAEdM,EAAKF,EAAWpnD,GAChBsnD,EAAOA,EAAKC,EAAMV,EAAeS,EAAKG,EAAUX,EAChDQ,EAAMA,GAAM,GAAOA,IAAO,GAC1BA,EAAOA,EAAKE,EAAMX,EAAeS,EAAKI,EAAUZ,EAChDG,GAAMK,EACNL,EAAMA,GAAM,GAAOA,IAAO,GAC1BA,EAAU,EAALA,EAAS,YAMlB,OAFAI,EAAK,EAEGF,GACN,KAAK,EACHE,GAAM5tC,EAAmB,EAAdytC,EAAkB,IAAM,GAErC,KAAK,EACHG,GAAM5tC,EAAmB,EAAdytC,EAAkB,IAAM,EAErC,KAAK,EACHG,GAAM5tC,EAAmB,EAAdytC,GAGXG,EAAOA,EAAKE,EAAMV,EAAeQ,EAAKI,EAAUX,EAChDO,EAAMA,GAAM,GAAOA,IAAO,GAC1BA,EAAOA,EAAKG,EAAMX,EAAeQ,EAAKK,EAAUZ,EAC9B,EAAdI,EACFF,GAAMK,EAENJ,GAAMI,EAIZz0C,KAAKo0C,GAAKA,EACVp0C,KAAKq0C,GAAKA,CAjFE,CAoFd7pB,SAAAA,GACE,IAAI4pB,EAAKp0C,KAAKo0C,GACZC,EAAKr0C,KAAKq0C,GAcZ,OAZAD,GAAMC,IAAO,EACbD,EAAY,WAALA,EAAmBH,EAAoB,MAALG,EAAeF,EACxDG,EACS,WAALA,EAAmBJ,GACW,YAA3BI,GAAM,GAAOD,IAAO,IAAqBH,KAAe,GAC/DG,GAAMC,IAAO,EACbD,EAAY,UAALA,EAAmBH,EAAoB,MAALG,EAAeF,EACxDG,EACS,WAALA,EAAmBJ,GACW,YAA3BI,GAAM,GAAOD,IAAO,IAAqBH,KAAe,GAC/DG,GAAMC,IAAO,GAGVD,IAAO,GAAG/nD,SAAS,IAAIE,SAAS,EAAG,MACnC8nD,IAAO,GAAGhoD,SAAS,IAAIE,SAAS,EAAG,IAlB5B,oGCrGd,IAAA4a,EAAAC,EAAA,GAAA2tC,EAAA,IAAAzuC,QAfAtgB,EAAAs6B,WA0BA,MAGErgB,WAAAA,CAAA+0C,GAGG,IAHS,cACV7pC,EAAgBrgB,WAAW9C,SADjB,aAEV8kB,EAAe,MAFjBkoC,EAAAxuC,2BAAA,KAAAuuC,EAFe,IAAIr8B,KAMjB1Y,KAAKod,UAAYjS,EAEjBnL,KAAKi1C,gBAAkB,IAAIv8B,IAC3B1Y,KAAK8M,aAGC,KAGJ9M,KAAKk1C,gBAAkB,GACvBl1C,KAAKm1C,eAAiB,CAXvB,CAeHC,iBAAAA,CAAkBC,GAChBr1C,KAAKi1C,gBAAgBt8B,IAAI08B,GACzBr1C,KAAKod,UAAUk4B,MAAM38B,IAAI08B,EAFO,CAKlCE,oBAAAA,CAAqBF,GACnBr1C,KAAKi1C,gBAAgBh9B,OAAOo9B,GAC5Br1C,KAAKod,UAAUk4B,MAAMr9B,OAAOo9B,EAFO,CAKrCG,UAAAA,CAAWC,GACJz1C,KAAK8M,eACR9M,KAAK8M,aAAe9M,KAAKod,UAAUj1B,cAAc,SACjD6X,KAAKod,UAAUmR,gBACZmnB,qBAAqB,QAAQ,GAC7BviB,OAAOnzB,KAAK8M,eAEjB,MAAM6oC,EAAa31C,KAAK8M,aAAa8oC,MACrCD,EAAWH,WAAWC,EAAME,EAAWE,SAASxqD,OARjC,CAWjB6vB,KAAAA,GACE,IAAK,MAAMm6B,KAAkBr1C,KAAKi1C,gBAChCj1C,KAAKod,UAAUk4B,MAAMr9B,OAAOo9B,GAE9Br1C,KAAKi1C,gBAAgB/5B,QACrBjU,sBAAA8tC,EAAA/0C,MAAkBkb,QAEdlb,KAAK8M,eAEP9M,KAAK8M,aAAasc,SAClBppB,KAAK8M,aAAe,KAVhB,CAcR,oBAAMgpC,CAAe52B,GACnB,GAAKA,IAAQjY,sBAAA8tC,EAAA/0C,MAAkBse,IAAIY,EAAK62B,YAQxC,IALA,EAAA5uC,EAAAwa,SACG3hB,KAAKgL,gBACN,qEAGEhL,KAAKg2C,0BAAT,CACE,MAAM,WAAED,EAAF,IAAc3sC,EAAd,MAAmB9gB,GAAU42B,EAC7B+2B,EAAW,IAAIC,SAASH,EAAY3sC,EAAK9gB,GAC/C0X,KAAKo1C,kBAAkBa,GACvB,UACQA,EAASE,OACflvC,sBAAA8tC,EAAA/0C,MAAkB2Y,IAAIo9B,EAFpB,CAGF,OACA,EAAA5uC,EAAA5d,MAAA,4BAAAoC,OAC8BuzB,EAAKk3B,aAAe,yDAGlDp2C,KAAKu1C,qBAAqBU,EALpB,CAP0B,MAiBpC,EAAA9uC,EAAAlc,aACE,gEA3BuB,CA+B3B,UAAMg5B,CAAKH,GAET,GAAIA,EAAKuyB,UAAavyB,EAAKwyB,cAAgBxyB,EAAKyyB,eAC9C,OAIF,GAFAzyB,EAAKuyB,UAAW,EAEZvyB,EAAKyyB,eAEP,kBADMv2C,KAAK81C,eAAehyB,EAAKyyB,gBAIjC,GAAIv2C,KAAKg2C,0BAA2B,CAClC,MAAMX,EAAiBvxB,EAAK0yB,uBAC5B,GAAInB,EAAgB,CAClBr1C,KAAKo1C,kBAAkBC,GACvB,UACQA,EAAe/kC,MADnB,CAEF,MAAOvgB,GAKP,MAJA,EAAAoX,EAAA5d,MAAA,wBAAAoC,OAA6B0pD,EAAeoB,OAAO,QAAA9qD,OAAMoE,EAAG,OAG5D+zB,EAAK9Y,iBAAkB,EACjBjb,CALK,CAJK,CAYpB,MAdkC,CAkBpC,MAAM0lD,EAAO3xB,EAAK4yB,qBAClB,GAAIjB,EAAM,CAGR,GAFAz1C,KAAKw1C,WAAWC,GAEZz1C,KAAK22C,2BACP,aAKI,IAAIjwC,SAAQC,IAChB,MAAM2pC,EAAUtwC,KAAK42C,sBAAsBjwC,GAC3C3G,KAAK62C,sBAAsB/yB,EAAMwsB,EAAjC,GAXM,CA/BK,CAgDjB,6BAAI0F,GAA4B,IAAAc,EAC9B,MAAMC,IAAa,QAADD,EAAC92C,KAAKod,iBAAL,IAAA05B,IAAAA,EAAgBxB,OAQnC,OAAO,EAAAnuC,EAAA3H,QAAOQ,KAAM,4BAA6B+2C,EATnB,CAYhC,8BAAIJ,GAKF,IAAIK,GAAY,EAehB,OAbM7vC,EAAA5W,UAImB,qBAAdjG,WAGP,iCAAiCD,KAAKC,UAAUC,cALhDysD,GAAY,IAWT,EAAA7vC,EAAA3H,QAAOQ,KAAM,6BAA8Bg3C,EApBnB,CAuBjCJ,qBAAAA,CAAsBp+B,GAgBpB,MAAM,gBAAE08B,GAAoBl1C,KACtBswC,EAAU,CACd71B,MAAM,EACN5C,SAdF,WAKE,KAJA,EAAA1Q,EAAAwa,SAAQ2uB,EAAQ71B,KAAM,6CACtB61B,EAAQ71B,MAAO,EAGRy6B,EAAgB7pD,OAAS,GAAK6pD,EAAgB,GAAGz6B,MAAM,CAC5D,MAAMw8B,EAAe/B,EAAgBgC,QACrCh7B,WAAW+6B,EAAaz+B,SAAU,EAF0B,CALrC,EAezBA,YAGF,OADA08B,EAAgB9kD,KAAKkgD,GACdA,CAvBuB,CA0BhC,iBAAI6G,GAOF,MAAMC,EAAWC,KACf,49CAuBF,OAAO,EAAAlwC,EAAA3H,QAAOQ,KAAM,gBAAiBo3C,EA/BnB,CAkCpBP,qBAAAA,CAAsB/yB,EAAMwsB,GAW1B,SAASgH,EAAMzwC,EAAM0wC,GACnB,OACG1wC,EAAK1W,WAAWonD,IAAW,GAC3B1wC,EAAK1W,WAAWonD,EAAS,IAAM,GAC/B1wC,EAAK1W,WAAWonD,EAAS,IAAM,EACD,IAA9B1wC,EAAK1W,WAAWonD,EAAS,EALD,CAQ7B,SAASC,EAAaC,EAAGF,EAAQnuB,EAAQsuB,GAGvC,OAFeD,EAAErN,UAAU,EAAGmN,GAEdG,EADDD,EAAErN,UAAUmN,EAASnuB,EAFW,CAKjD,IAAIh8B,EAAGa,EAGP,MAAMo4B,EAASrmB,KAAKod,UAAUj1B,cAAc,UAC5Ck+B,EAAO9B,MAAQ,EACf8B,EAAO7B,OAAS,EAChB,MAAMyX,EAAM5V,EAAO6V,WAAW,MAE9B,IAAIyb,EAAS,EAkBb,MAAMxC,EAAA,KAAAxpD,OAAsBQ,KAAKomD,OAAV5mD,OAAkBqU,KAAKm1C,kBAM9C,IAAItuC,EAAO7G,KAAKm3C,cAEhBtwC,EAAO2wC,EACL3wC,EAFqB,IAIrBsuC,EAAe9pD,OACf8pD,GAGF,MACMyC,EAAa,WACnB,IAAIC,EAAWP,EAAMzwC,EAFO,IAG5B,IAAKzZ,EAAI,EAAGa,EAAKknD,EAAe9pD,OAAS,EAAG+B,EAAIa,EAAIb,GAAK,EACvDyqD,EAAYA,EAAWD,EAAaN,EAAMnC,EAAgB/nD,GAAM,EAE9DA,EAAI+nD,EAAe9pD,SAErBwsD,EAAYA,EAAWD,EAAaN,EAAMnC,EAAiB,MAAO/nD,GAAM,GAE1EyZ,EAAO2wC,EAAa3wC,EAVQ,GAUmB,GAAG,EAAAM,EAAA2wC,UAASD,IAE3D,MAAM3sD,EAAA,iCAAAS,OAAuCosD,KAAKlxC,GAAM,MAClD4uC,EAAA,4BAAA9pD,OAAmCwpD,EAAe,UAAAxpD,OAAQT,EAAI,KACpE8U,KAAKw1C,WAAWC,GAEhB,MAAMzpB,EAAMhsB,KAAKod,UAAUj1B,cAAc,OACzC6jC,EAAI1jC,MAAMyhD,WAAa,SACvB/d,EAAI1jC,MAAMi8B,MAAQyH,EAAI1jC,MAAMk8B,OAAS,OACrCwH,EAAI1jC,MAAME,SAAW,WACrBwjC,EAAI1jC,MAAMG,IAAMujC,EAAI1jC,MAAMmpC,KAAO,MAEjC,IAAK,MAAMjrC,IAAQ,CAACs9B,EAAKiyB,WAAYZ,GAAiB,CACpD,MAAMrL,EAAO9pC,KAAKod,UAAUj1B,cAAc,QAC1C2hD,EAAK1hD,YAAc,KACnB0hD,EAAKxhD,MAAM0vD,WAAaxxD,EACxBwlC,EAAImH,OAAO2W,EAJyC,CAMtD9pC,KAAKod,UAAUxzB,KAAKupC,OAAOnH,GA5D3B,SAASisB,EAAYzxD,EAAMgyB,GAEzB,KAAMm/B,EAAS,GAGb,OAFA,EAAAxwC,EAAA5d,MAAK,qCACLivB,IAGFyjB,EAAInY,KAAO,QAAUt9B,EACrBy1C,EAAIic,SAAS,IAAK,EAAG,IACHjc,EAAIK,aAAa,EAAG,EAAG,EAAG,GAC9Bz1B,KAAK,GAAK,EACtB2R,IAGF0D,WAAW+7B,EAAYh0B,KAAK,KAAMz9B,EAAMgyB,GAdL,CA8DrCy/B,CAAY9C,GAAgB,KAC1BnpB,EAAI5C,SACJknB,EAAQz4B,UAAR,GAjGiC,GAhQvC7xB,EAAAg+B,eAuWA,MACE/jB,WAAAA,CACEk4C,EADFC,GAQE,IANA,gBACE52C,GAAkB,EADpB,gBAEEwJ,GAAkB,EAFpB,aAGEJ,GAAe,EAHjB,YAIE+Y,EAAc,MANlBy0B,EASEp4C,KAAKq4C,eAAiBvpD,OAAOC,OAAO,MAEpC,IAAK,MAAM3B,KAAK+qD,EACdn4C,KAAK5S,GAAK+qD,EAAe/qD,GAE3B4S,KAAKwB,iBAAsC,IAApBA,EACvBxB,KAAKgL,iBAAsC,IAApBA,EACvBhL,KAAK4K,cAAgC,IAAjBA,EACpB5K,KAAKs4C,aAAe30B,CATpB,CAYF6yB,oBAAAA,GAAuB,IAAA+B,EACrB,IAAKv4C,KAAK6G,MAAQ7G,KAAKgL,gBACrB,OAAO,KAET,IAAIqqC,EACJ,GAAKr1C,KAAKw4C,YAEH,CACL,MAAMC,EAAM,CACVC,OAAQ14C,KAAKw4C,YAAYG,YAEvB34C,KAAKw4C,YAAYI,cACnBH,EAAInwD,MAAJ,WAAAqD,OAAuBqU,KAAKw4C,YAAYI,YAAY,QAEtDvD,EAAiB,IAAIa,SACnBl2C,KAAKw4C,YAAYR,WACjBh4C,KAAK6G,KACL4xC,EAVG,MADLpD,EAAiB,IAAIa,SAASl2C,KAAK+1C,WAAY/1C,KAAK6G,KAAM,CAAC,GAgB7D,OADA,QAAA0xC,EAAAv4C,KAAKs4C,oBAAL,IAAAC,GAAAA,EAAAl2C,KAAArC,KAAoBA,MACbq1C,CAtBc,CAyBvBqB,kBAAAA,GAAqB,IAAAmC,EACnB,IAAK74C,KAAK6G,MAAQ7G,KAAKgL,gBACrB,OAAO,KAET,MAAMnE,GAAO,EAAAM,EAAA3Z,eAAcwS,KAAK6G,MAE1B3b,EAAA,YAAAS,OAAkBqU,KAAK84C,SAAS,YAAAntD,OAAUosD,KAAKlxC,GAAM,MAC3D,IAAI4uC,EACJ,GAAKz1C,KAAKw4C,YAEH,CACL,IAAIC,EAAA,gBAAA9sD,OAAsBqU,KAAKw4C,YAAYG,WAAW,KAClD34C,KAAKw4C,YAAYI,cACnBH,GAAA,uBAAA9sD,OAA8BqU,KAAKw4C,YAAYI,YAAY,SAE7DnD,EAAA,4BAAA9pD,OAAmCqU,KAAKw4C,YAAYR,WAAW,MAAArsD,OAAI8sD,EAAI,QAAA9sD,OAAMT,EAAI,IAL5E,MADLuqD,EAAA,4BAAA9pD,OAAmCqU,KAAK+1C,WAAW,UAAApqD,OAAQT,EAAI,KAUjE,OADA,QAAA2tD,EAAA74C,KAAKs4C,oBAAL,IAAAO,GAAAA,EAAAx2C,KAAArC,KAAoBA,KAAM9U,GACnBuqD,CAnBY,CAsBrBsD,gBAAAA,CAAiBvkC,EAAMwkC,GACrB,QAAuC1tD,IAAnC0U,KAAKq4C,eAAeW,GACtB,OAAOh5C,KAAKq4C,eAAeW,GAG7B,IAAIC,EACJ,IACEA,EAAOzkC,EAAK7lB,IAAIqR,KAAK+1C,WAAa,SAAWiD,EAD3C,CAEF,MAAOjpD,GACP,IAAKiQ,KAAK4K,aACR,MAAM7a,EAIR,OAFA,EAAAoX,EAAA5d,MAAA,2CAAAoC,OAAgDoE,EAAG,OAE3CiQ,KAAKq4C,eAAeW,GAAa,SAAUh1C,EAAG6V,GAAO,CANlD,CAYb,GAAI7Z,KAAKwB,iBAAmB2F,EAAA/F,YAAYI,gBAAiB,CACvD,MAAM03C,EAAQ,GACd,IAAK,MAAMC,KAAWF,EAAM,CAC1B,MAAMpZ,OAAwBv0C,IAAjB6tD,EAAQtZ,KAAqBsZ,EAAQtZ,KAAKjzC,KAAK,KAAO,GACnEssD,EAAM9oD,KAAK,KAAM+oD,EAAQjhB,IAAK,IAAK2H,EAAM,OAFf,CAK5B,OAAQ7/B,KAAKq4C,eAAeW,GAAa,IAAIv3C,SAC3C,IACA,OACAy3C,EAAMtsD,KAAK,IAV0C,CAezD,OAAQoT,KAAKq4C,eAAeW,GAAa,SAAUh1C,EAAG6V,GACpD,IAAK,MAAMs/B,KAAWF,EACA,UAAhBE,EAAQjhB,MACVihB,EAAQtZ,KAAO,CAAChmB,GAAOA,IAGzB7V,EAAEm1C,EAAQjhB,KAAK73B,MAAM2D,EAAGm1C,EAAQtZ,KANwB,CAnC5B,oKC3ZpC,IAAAyL,EAAAlkC,EAAA,GAMAA,EAAA,GAoCA,MAAM+oC,EAAY,SAAUjlD,GAC1B,OAAO,IAAIwb,SAAQ,CAACC,EAASC,KAChBxf,oBAAwB,OAChCgyD,SAASluD,GAAK,CAACf,EAAO0c,MACnB1c,GAAU0c,EAIdF,EAAQ,IAAIzZ,WAAW2Z,IAHrBD,EAAO,IAAI3c,MAAME,GAGnB,GALF,GAH6B,EAajC,MAAM2e,UAA0BwiC,EAAAgB,mBAvEhCtmD,EAAA8iB,kBAAAA,EAyEA,MAAMN,UAA0B8iC,EAAA2E,kBAI9BC,aAAAA,CAAc3rB,EAAOC,GAEnB,OADep9B,oBAAwB,OACzBiyD,aAAa90B,EAAOC,EAFP,EA7E/Bx+B,EAAAwiB,kBAAAA,EAmFA,MAAMG,UAA8B2iC,EAAAwF,sBAIlCC,UAAAA,CAAW7lD,EAAK8lD,GACd,OAAOb,EAAUjlD,GAAK6hB,MAAKlG,IAClB,CAAEoqC,SAAUpqC,EAAMmqC,qBAFI,EAvFnChrD,EAAA2iB,sBAAAA,EA8FA,MAAMM,UAAoCqiC,EAAA4F,4BAIxCH,UAAAA,CAAW7lD,GACT,OAAOilD,EAAUjlD,EADH,EAlGlBlF,EAAAijB,4BAAAA,sFCeA,IAAA9B,EAAAC,EAAA,GAcAE,EAAAF,EAAA,GAKAkyC,EAAAlyC,EAAA,IAKAmyC,EAAAnyC,EAAA,IAKA,MAGMoyC,EAAiB,KAWjBC,EAAoB,GAoI1B,MAAMC,EACJz5C,WAAAA,CAAY4L,GACV7L,KAAK6L,cAAgBA,EACrB7L,KAAK25C,MAAQ7qD,OAAOC,OAAO,KAFF,CAK3B6qD,SAAAA,CAAU3nC,EAAIsS,EAAOC,GACnB,IAAIq1B,EAQJ,YAPuBvuD,IAAnB0U,KAAK25C,MAAM1nC,IACb4nC,EAAc75C,KAAK25C,MAAM1nC,GACzBjS,KAAK6L,cAAc4nC,MAAMoG,EAAat1B,EAAOC,KAE7Cq1B,EAAc75C,KAAK6L,cAAc9c,OAAOw1B,EAAOC,GAC/CxkB,KAAK25C,MAAM1nC,GAAM4nC,GAEZA,CAToB,CAY7B5hC,OAAOhG,UACEjS,KAAK25C,MAAM1nC,EADT,CAIXiJ,KAAAA,GACE,IAAK,MAAMjJ,KAAMjS,KAAK25C,MAAO,CAC3B,MAAME,EAAc75C,KAAK25C,MAAM1nC,GAC/BjS,KAAK6L,cAAcuD,QAAQyqC,UACpB75C,KAAK25C,MAAM1nC,EAHS,CADvB,EASV,SAAS6nC,EACP7d,EACA8d,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,MAAOx2C,EAAGnB,EAAGoB,EAAGV,EAAGmtB,EAAIC,IAAM,EAAAppB,EAAAkzC,qBAAoBve,GACjD,GAAU,IAANr5B,GAAiB,IAANoB,EAAS,CAWtB,MAAMy2C,EAAML,EAAQr2C,EAAI0sB,EAClBiqB,EAAOrtD,KAAK6kC,MAAMuoB,GAClBE,EAAMN,EAAQ/2C,EAAIotB,EAClBkqB,EAAOvtD,KAAK6kC,MAAMyoB,GAClBE,GAAOT,EAAQE,GAASv2C,EAAI0sB,EAI5BqqB,EAASztD,KAAK0Y,IAAI1Y,KAAK6kC,MAAM2oB,GAAOH,IAAS,EAC7CK,GAAOV,EAAQE,GAASj3C,EAAIotB,EAC5BsqB,EAAU3tD,KAAK0Y,IAAI1Y,KAAK6kC,MAAM6oB,GAAOH,IAAS,EASpD,OAJA3e,EAAIgf,aAAa5tD,KAAK6tD,KAAKn3C,GAAI,EAAG,EAAG1W,KAAK6tD,KAAK53C,GAAIo3C,EAAME,GACzD3e,EAAII,UAAU0d,EAAQC,EAAMC,EAAMC,EAAMC,EAAM,EAAG,EAAGW,EAAQE,GAC5D/e,EAAIgf,aAAal3C,EAAGnB,EAAGoB,EAAGV,EAAGmtB,EAAIC,GAE1B,CAACoqB,EAAQE,EA9BM,CAiCxB,GAAU,IAANj3C,GAAiB,IAANT,EAAS,CAEtB,MAAMm3C,EAAMJ,EAAQr2C,EAAIysB,EAClBiqB,EAAOrtD,KAAK6kC,MAAMuoB,GAClBE,EAAMP,EAAQx3C,EAAI8tB,EAClBkqB,EAAOvtD,KAAK6kC,MAAMyoB,GAClBE,GAAOR,EAAQE,GAASv2C,EAAIysB,EAC5BqqB,EAASztD,KAAK0Y,IAAI1Y,KAAK6kC,MAAM2oB,GAAOH,IAAS,EAC7CK,GAAOX,EAAQE,GAAS13C,EAAI8tB,EAC5BsqB,EAAU3tD,KAAK0Y,IAAI1Y,KAAK6kC,MAAM6oB,GAAOH,IAAS,EAMpD,OAJA3e,EAAIgf,aAAa,EAAG5tD,KAAK6tD,KAAKt4C,GAAIvV,KAAK6tD,KAAKl3C,GAAI,EAAG02C,EAAME,GACzD3e,EAAII,UAAU0d,EAAQC,EAAMC,EAAMC,EAAMC,EAAM,EAAG,EAAGa,EAASF,GAC7D7e,EAAIgf,aAAal3C,EAAGnB,EAAGoB,EAAGV,EAAGmtB,EAAIC,GAE1B,CAACsqB,EAASF,EAfK,CAuBxB,OAJA7e,EAAII,UAAU0d,EAAQC,EAAMC,EAAMC,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,GAI5D,CAFQltD,KAAKwsC,MAAM91B,EAAGnB,GAEZ03C,EADFjtD,KAAKwsC,MAAM71B,EAAGV,GACIi3C,EA1DjC,CAqOF,MAAMY,EACJl7C,WAAAA,CAAYskB,EAAOC,GAEjBxkB,KAAKo7C,cAAe,EACpBp7C,KAAKq7C,SAAW,EAChBr7C,KAAKs7C,cAAgB,EACrBt7C,KAAKu7C,WAAap0C,EAAAvW,gBAClBoP,KAAKw7C,gBAAkB,EACvBx7C,KAAKy7C,WAAat0C,EAAAtW,qBAClBmP,KAAK07C,QAAU,EAEf17C,KAAKktB,EAAI,EACTltB,KAAKmtB,EAAI,EAETntB,KAAK27C,MAAQ,EACb37C,KAAK47C,MAAQ,EAEb57C,KAAK67C,YAAc,EACnB77C,KAAK87C,YAAc,EACnB97C,KAAK+7C,WAAa,EAClB/7C,KAAKg8C,kBAAoB70C,EAAA5T,kBAAkBC,KAC3CwM,KAAKi8C,SAAW,EAEhBj8C,KAAKk8C,UAAY,UACjBl8C,KAAKm8C,YAAc,UACnBn8C,KAAKo8C,aAAc,EAEnBp8C,KAAKq8C,UAAY,EACjBr8C,KAAKs8C,YAAc,EACnBt8C,KAAKu8C,UAAY,EACjBv8C,KAAKw8C,YAAc,KACnBx8C,KAAKy8C,aAAe,OAEpBz8C,KAAK08C,uBAAuB,CAAC,EAAG,EAAGn4B,EAAOC,GAhCjB,CAmC3BmG,KAAAA,GACE,MAAMA,EAAQ77B,OAAOC,OAAOiR,MAE5B,OADA2qB,EAAMgyB,QAAU38C,KAAK28C,QAAQn5C,QACtBmnB,CAHD,CAMRiyB,eAAAA,CAAgB1vB,EAAGC,GACjBntB,KAAKktB,EAAIA,EACTltB,KAAKmtB,EAAIA,CAFW,CAKtB0vB,gBAAAA,CAAiBpiD,EAAWyyB,EAAGC,IAC5BD,EAAGC,GAAKhmB,EAAA3E,KAAKU,eAAe,CAACgqB,EAAGC,GAAI1yB,GACrCuF,KAAK88C,KAAOzvD,KAAKkT,IAAIP,KAAK88C,KAAM5vB,GAChCltB,KAAK+8C,KAAO1vD,KAAKkT,IAAIP,KAAK+8C,KAAM5vB,GAChCntB,KAAKg9C,KAAO3vD,KAAKsW,IAAI3D,KAAKg9C,KAAM9vB,GAChCltB,KAAKi9C,KAAO5vD,KAAKsW,IAAI3D,KAAKi9C,KAAM9vB,EALA,CAQlC+vB,gBAAAA,CAAiBziD,EAAW8J,GAC1B,MAAM/V,EAAK2Y,EAAA3E,KAAKU,eAAeqB,EAAM9J,GAC/BhM,EAAK0Y,EAAA3E,KAAKU,eAAeqB,EAAKf,MAAM,GAAI/I,GAC9CuF,KAAK88C,KAAOzvD,KAAKkT,IAAIP,KAAK88C,KAAMtuD,EAAG,GAAIC,EAAG,IAC1CuR,KAAK+8C,KAAO1vD,KAAKkT,IAAIP,KAAK+8C,KAAMvuD,EAAG,GAAIC,EAAG,IAC1CuR,KAAKg9C,KAAO3vD,KAAKsW,IAAI3D,KAAKg9C,KAAMxuD,EAAG,GAAIC,EAAG,IAC1CuR,KAAKi9C,KAAO5vD,KAAKsW,IAAI3D,KAAKi9C,KAAMzuD,EAAG,GAAIC,EAAG,GANV,CASlC0uD,uBAAAA,CAAwB1iD,EAAWqI,GACjCqE,EAAA3E,KAAKK,YAAYpI,EAAWqI,GAC5B9C,KAAK88C,KAAOzvD,KAAKkT,IAAIP,KAAK88C,KAAMh6C,EAAO,IACvC9C,KAAKg9C,KAAO3vD,KAAKsW,IAAI3D,KAAKg9C,KAAMl6C,EAAO,IACvC9C,KAAK+8C,KAAO1vD,KAAKkT,IAAIP,KAAK+8C,KAAMj6C,EAAO,IACvC9C,KAAKi9C,KAAO5vD,KAAKsW,IAAI3D,KAAKi9C,KAAMn6C,EAAO,GALE,CAQ3Cs6C,qBAAAA,CAAsB3iD,EAAWuK,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIzC,GAC/D,MAAMu6C,EAAMl2C,EAAA3E,KAAKuC,kBAAkBC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC/D,GAAIzC,EAKF,OAJAA,EAAO,GAAKzV,KAAKkT,IAAIuC,EAAO,GAAIu6C,EAAI,GAAIA,EAAI,IAC5Cv6C,EAAO,GAAKzV,KAAKsW,IAAIb,EAAO,GAAIu6C,EAAI,GAAIA,EAAI,IAC5Cv6C,EAAO,GAAKzV,KAAKkT,IAAIuC,EAAO,GAAIu6C,EAAI,GAAIA,EAAI,SAC5Cv6C,EAAO,GAAKzV,KAAKsW,IAAIb,EAAO,GAAIu6C,EAAI,GAAIA,EAAI,KAG9Cr9C,KAAKk9C,iBAAiBziD,EAAW4iD,EATsC,CAYzEC,kBAAAA,GAA+D,IAA5CC,EAAAnyD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAWkuD,EAAAkE,SAAShqD,KAAMiH,EAAArP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAY,KACvD,MAAMiyD,EAAM,CAACr9C,KAAK88C,KAAM98C,KAAK+8C,KAAM/8C,KAAKg9C,KAAMh9C,KAAKi9C,MACnD,GAAIM,IAAajE,EAAAkE,SAAS/pD,OAAQ,CAC3BgH,IACH,EAAA0M,EAAAlc,aAAY,+CAId,MAAM+pB,EAAQ7N,EAAA3E,KAAKqB,8BAA8BpJ,GAC3CgjD,EAAczoC,EAAM,GAAKhV,KAAKu8C,UAAa,EAC3CmB,EAAc1oC,EAAM,GAAKhV,KAAKu8C,UAAa,EACjDc,EAAI,IAAMI,EACVJ,EAAI,IAAMK,EACVL,EAAI,IAAMI,EACVJ,EAAI,IAAMK,CAZsB,CAclC,OAAOL,CAhBsD,CAmB/DM,kBAAAA,GACE,MAAMn5C,EAAY2C,EAAA3E,KAAKgC,UAAUxE,KAAK28C,QAAS38C,KAAKs9C,sBACpDt9C,KAAK08C,uBAAuBl4C,GAAa,CAAC,EAAG,EAAG,EAAG,GAFhC,CAKrBo5C,WAAAA,GACE,OAAO59C,KAAK88C,OAASe,GADT,CAIdnB,sBAAAA,CAAuBW,GACrBr9C,KAAK28C,QAAUU,EACfr9C,KAAK88C,KAAOe,IACZ79C,KAAK+8C,KAAOc,IACZ79C,KAAKg9C,KAAO,EACZh9C,KAAKi9C,KAAO,CALc,CAQ5Ba,yBAAAA,GAAsE,IAA5CP,EAAAnyD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAWkuD,EAAAkE,SAAShqD,KAAMiH,EAAArP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAY,KAC9D,OAAO+b,EAAA3E,KAAKgC,UACVxE,KAAK28C,QACL38C,KAAKs9C,mBAAmBC,EAAU9iD,GAHgC,EAQxE,SAASsjD,EAAmB9hB,EAAK+hB,GAC/B,GAAyB,qBAAdC,WAA6BD,aAAmBC,UAEzD,YADAhiB,EAAIiiB,aAAaF,EAAS,EAAG,GAe/B,MAAMx5B,EAASw5B,EAAQx5B,OACrBD,EAAQy5B,EAAQz5B,MACZ45B,EAAqB35B,EAASi1B,EAC9B2E,GAAc55B,EAAS25B,GAAsB1E,EAC7C4E,EAAqC,IAAvBF,EAA2BC,EAAaA,EAAa,EAEnEE,EAAeriB,EAAIsiB,gBAAgBh6B,EAAOk1B,GAChD,IACE+E,EADEC,EAAS,EAEb,MAAMr1C,EAAM40C,EAAQn3C,KACd63C,EAAOJ,EAAaz3C,KAC1B,IAAIzZ,EAAG6Y,EAAG04C,EAAiBC,EAI3B,GAAIZ,EAAQa,OAAS13C,EAAAjT,UAAUC,eAAgB,CAE7C,MAAM2qD,EAAY11C,EAAItb,WAChBixD,EAAS,IAAIx9C,YAAYm9C,EAAK9uD,OAAQ,EAAG8uD,EAAK5wD,YAAc,GAC5DkxD,EAAmBD,EAAO1zD,OAC1B4zD,EAAe16B,EAAQ,GAAM,EAC7B26B,EAAQ,WACRC,EAAQh4C,EAAA/F,YAAYC,eAAiB,WAAa,IAExD,IAAKjU,EAAI,EAAGA,EAAIixD,EAAajxD,IAAK,CAGhC,IAFAuxD,EAAkBvxD,EAAIgxD,EAAa3E,EAAoB0E,EACvDK,EAAU,EACLv4C,EAAI,EAAGA,EAAI04C,EAAiB14C,IAAK,CACpC,MAAMm5C,EAAUN,EAAYL,EAC5B,IAAItP,EAAI,EACR,MAAMkQ,EAAOD,EAAUH,EAAc16B,EAAkB,EAAV66B,EAAc,EACrDE,GAAsB,EAAPD,EACrB,IAAIE,EAAO,EACPC,EAAU,EACd,KAAOrQ,EAAImQ,EAAcnQ,GAAK,EAC5BqQ,EAAUp2C,EAAIq1C,KACdM,EAAOP,KAAuB,IAAVgB,EAAgBN,EAAQC,EAC5CJ,EAAOP,KAAuB,GAAVgB,EAAeN,EAAQC,EAC3CJ,EAAOP,KAAuB,GAAVgB,EAAeN,EAAQC,EAC3CJ,EAAOP,KAAuB,GAAVgB,EAAeN,EAAQC,EAC3CJ,EAAOP,KAAuB,EAAVgB,EAAcN,EAAQC,EAC1CJ,EAAOP,KAAuB,EAAVgB,EAAcN,EAAQC,EAC1CJ,EAAOP,KAAuB,EAAVgB,EAAcN,EAAQC,EAC1CJ,EAAOP,KAAuB,EAAVgB,EAAcN,EAAQC,EAE5C,KAAOhQ,EAAIkQ,EAAMlQ,IACF,IAAToQ,IACFC,EAAUp2C,EAAIq1C,KACdc,EAAO,KAGTR,EAAOP,KAAagB,EAAUD,EAAOL,EAAQC,EAC7CI,IAAS,CAzByB,CA6BtC,KAAOf,EAAUQ,GACfD,EAAOP,KAAa,EAGtBviB,EAAIiiB,aAAaI,EAAc,EAAGlxD,EAAIqsD,EApCN,CATW,MA+CxC,GAAIuE,EAAQa,OAAS13C,EAAAjT,UAAUG,WAAY,CAIhD,IAFA4R,EAAI,EACJ24C,EAAmBr6B,EAAQk1B,EAAoB,EAC1CrsD,EAAI,EAAGA,EAAIgxD,EAAYhxD,IAC1BsxD,EAAKznC,IAAI7N,EAAI3I,SAASg+C,EAAQA,EAASG,IACvCH,GAAUG,EAEV3iB,EAAIiiB,aAAaI,EAAc,EAAGr4C,GAClCA,GAAKwzC,EAEHrsD,EAAIixD,IACNO,EAAmBr6B,EAAQ45B,EAAqB,EAChDO,EAAKznC,IAAI7N,EAAI3I,SAASg+C,EAAQA,EAASG,IAEvC3iB,EAAIiiB,aAAaI,EAAc,EAAGr4C,GAfY,KAiB3C,IAAI+3C,EAAQa,OAAS13C,EAAAjT,UAAUE,UAqBpC,MAAM,IAAInK,MAAJ,mBAAA0B,OAA6BqyD,EAAQa,OAjB3C,IAFAF,EAAkBlF,EAClBmF,EAAmBr6B,EAAQo6B,EACtBvxD,EAAI,EAAGA,EAAIixD,EAAajxD,IAAK,CAOhC,IANIA,GAAKgxD,IACPO,EAAkBR,EAClBS,EAAmBr6B,EAAQo6B,GAG7BH,EAAU,EACLv4C,EAAI24C,EAAkB34C,KACzBy4C,EAAKF,KAAap1C,EAAIq1C,KACtBC,EAAKF,KAAap1C,EAAIq1C,KACtBC,EAAKF,KAAap1C,EAAIq1C,KACtBC,EAAKF,KAAa,IAGpBviB,EAAIiiB,aAAaI,EAAc,EAAGlxD,EAAIqsD,EAdN,CAgB7B,CApHiC,CAyH1C,SAASgG,EAAmBxjB,EAAK+hB,GAC/B,GAAIA,EAAQ15B,OAGV,YADA2X,EAAII,UAAU2hB,EAAQ15B,OAAQ,EAAG,GAKnC,MAAME,EAASw5B,EAAQx5B,OACrBD,EAAQy5B,EAAQz5B,MACZ45B,EAAqB35B,EAASi1B,EAC9B2E,GAAc55B,EAAS25B,GAAsB1E,EAC7C4E,EAAqC,IAAvBF,EAA2BC,EAAaA,EAAa,EAEnEE,EAAeriB,EAAIsiB,gBAAgBh6B,EAAOk1B,GAChD,IAAIgF,EAAS,EACb,MAAMr1C,EAAM40C,EAAQn3C,KACd63C,EAAOJ,EAAaz3C,KAE1B,IAAK,IAAIzZ,EAAI,EAAGA,EAAIixD,EAAajxD,IAAK,CACpC,MAAMuxD,EACJvxD,EAAIgxD,EAAa3E,EAAoB0E,IAKpCM,WAAW,EAAAlF,EAAAmG,4BAA2B,CACvCt2C,MACAq1C,SACAC,OACAn6B,QACAC,OAAQm6B,EACRgB,cAAe,KAGjB1jB,EAAIiiB,aAAaI,EAAc,EAAGlxD,EAAIqsD,EAhBF,CAnBE,CAuC1C,SAASmG,EAAaC,EAAWC,GAC/B,MAAMC,EAAa,CACjB,cACA,YACA,WACA,cACA,YACA,UACA,WACA,aACA,2BACA,OACA,UAEF,IAAK,MAAMC,KAAYD,OACOz0D,IAAxBu0D,EAAUG,KACZF,EAAQE,GAAYH,EAAUG,SAGJ10D,IAA1Bu0D,EAAUI,cACZH,EAAQG,YAAYJ,EAAUK,eAC9BJ,EAAQK,eAAiBN,EAAUM,eArBG,CAyB1C,SAASC,EAAkBnkB,GAczB,GAbAA,EAAIokB,YAAcpkB,EAAIqkB,UAAY,UAClCrkB,EAAIskB,SAAW,UACftkB,EAAIukB,YAAc,EAClBvkB,EAAIsgB,UAAY,EAChBtgB,EAAIwkB,QAAU,OACdxkB,EAAIykB,SAAW,QACfzkB,EAAI0kB,WAAa,GACjB1kB,EAAI2kB,yBAA2B,cAC/B3kB,EAAInY,KAAO,uBACax4B,IAApB2wC,EAAIgkB,cACNhkB,EAAIgkB,YAAY,IAChBhkB,EAAIkkB,eAAiB,IAIpBh5C,EAAA5W,SACD,CACA,MAAM,OAAE+8C,GAAWrR,EACJ,SAAXqR,GAAgC,KAAXA,IACvBrR,EAAIqR,OAAS,OAHf,CAjB4B,CAyBhC,SAASuT,EAAqB1gD,EAAO2gD,EAAIC,EAAIC,GAC3C,MAAM31D,EAAS8U,EAAM9U,OACrB,IAAK,IAAI+B,EAAI,EAAGA,EAAI/B,EAAQ+B,GAAK,EAAG,CAClC,MAAM6zD,EAAQ9gD,EAAM/S,GACpB,GAAc,IAAV6zD,EACF9gD,EAAM/S,EAAI,GAAK0zD,EACf3gD,EAAM/S,EAAI,GAAK2zD,EACf5gD,EAAM/S,EAAI,GAAK4zD,OACV,GAAIC,EAAQ,IAAK,CACtB,MAAMC,EAAS,IAAMD,EACrB9gD,EAAM/S,EAAI,GAAM+S,EAAM/S,EAAI,GAAK6zD,EAAQH,EAAKI,GAAW,EACvD/gD,EAAM/S,EAAI,GAAM+S,EAAM/S,EAAI,GAAK6zD,EAAQF,EAAKG,GAAW,EACvD/gD,EAAM/S,EAAI,GAAM+S,EAAM/S,EAAI,GAAK6zD,EAAQD,EAAKE,GAAW,CAJjC,CANU,CAFW,CAiBjD,SAASC,EAAkBC,EAAUC,EAAWC,GAC9C,MAAMj2D,EAAS+1D,EAAS/1D,OAClB2pB,EAAQ,EAAI,IAClB,IAAK,IAAI5nB,EAAI,EAAGA,EAAI/B,EAAQ+B,GAAK,EAAG,CAClC,MAAM6zD,EAAQK,EAAcA,EAAYF,EAASh0D,IAAMg0D,EAASh0D,GAChEi0D,EAAUj0D,GAAMi0D,EAAUj0D,GAAK6zD,EAAQjsC,EAAS,CAFd,CAHuB,CAS7D,SAASusC,EAAuBH,EAAUC,EAAWC,GACnD,MAAMj2D,EAAS+1D,EAAS/1D,OACxB,IAAK,IAAI+B,EAAI,EAAGA,EAAI/B,EAAQ+B,GAAK,EAAG,CAClC,MAAM+/B,EACc,GAAlBi0B,EAASh0D,EAAI,GACK,IAAlBg0D,EAASh0D,EAAI,GACK,GAAlBg0D,EAASh0D,EAAI,GACfi0D,EAAUj0D,GAAKk0D,EACVD,EAAUj0D,GAAKk0D,EAAYn0B,GAAK,IAAO,EACvCk0B,EAAUj0D,GAAK+/B,GAAM,EAPQ,CAF4B,CA6DlE,SAASq0B,EAAavlB,EAAKwlB,EAAOC,EAAUC,GAC1C,MAAMC,EAAeD,EAAS,GACxBE,EAAeF,EAAS,GACxBG,EAAaH,EAAS,GAAKC,EAC3BG,EAAcJ,EAAS,GAAKE,EACf,IAAfC,GAAoC,IAAhBC,IArD1B,SACEC,EACAN,EACAn9B,EACAC,EACA2V,EACA8nB,EACAX,EACAM,EACAC,EACAK,EACAC,GAEA,MAAMC,IAAgBH,EAChBnB,EAAKsB,EAAcH,EAAS,GAAK,EACjClB,EAAKqB,EAAcH,EAAS,GAAK,EACjCjB,EAAKoB,EAAcH,EAAS,GAAK,EAEjCI,EACQ,eAAZloB,EAA2BonB,EAAyBJ,EAIhDmB,EAAYj1D,KAAKkT,IAAIikB,EAAQn3B,KAAKk1D,KADd,QACuCh+B,IACjE,IAAK,IAAIi+B,EAAM,EAAGA,EAAMh+B,EAAQg+B,GAAOF,EAAW,CAChD,MAAMG,EAAcp1D,KAAKkT,IAAI+hD,EAAW99B,EAASg+B,GAC3CpB,EAAWY,EAAQ1lB,aACvBslB,EAAeM,EACfM,GAAOX,EAAeM,GACtB59B,EACAk+B,GAEIpB,EAAYK,EAASplB,aACzBslB,EACAY,EAAMX,EACNt9B,EACAk+B,GAGEL,GACFvB,EAAqBO,EAASv6C,KAAMi6C,EAAIC,EAAIC,GAE9CqB,EAAUjB,EAASv6C,KAAMw6C,EAAUx6C,KAAMy6C,GAEzCI,EAASxD,aAAamD,EAAWO,EAAcY,EAAMX,EApBL,CAZlD,CA4CAa,CACEjB,EAAMx3B,QACNy3B,EACAI,EACAC,EACAN,EAAMtnB,QACNsnB,EAAMQ,SACNR,EAAMH,YACNM,EACAC,EACAJ,EAAMvsC,QACNusC,EAAMtsC,SAER8mB,EAAI1hC,OACJ0hC,EAAIukB,YAAc,EAClBvkB,EAAI2kB,yBAA2B,cAC/B3kB,EAAIgf,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAChChf,EAAII,UAAUqlB,EAASr7B,OAAQ,EAAG,GAClC4V,EAAIzhC,UA1BgD,CA6BtD,SAASmoD,EAAyBloD,EAAWmoD,GAC3C,MAAM5tC,EAAQ7N,EAAA3E,KAAKqB,8BAA8BpJ,GAGjDua,EAAM,GAAK3nB,KAAKw1D,OAAO7tC,EAAM,IAC7BA,EAAM,GAAK3nB,KAAKw1D,OAAO7tC,EAAM,IAC7B,MAAM8tC,EAAcz1D,KAAKw1D,QACtB/3D,WAAWi4D,kBAAoB,GAAKz7C,EAAAo9B,cAAcC,kBAErD,YAAoBr5C,IAAhBs3D,EAEKA,EACE5tC,EAAM,IAAM8tC,GAAe9tC,EAAM,IAAM8tC,CAZM,CAoB1D,MAAME,EAAkB,CAAC,OAAQ,QAAS,UACpCC,EAAmB,CAAC,QAAS,QAAS,SACtCC,EAAc,CAAC,EACfC,EAAU,CAAC,EAAjB,IAAAC,EAAA,IAAAvvC,QAEA,MAAMiU,EACJ7nB,WAAAA,CACEojD,EACA9uC,EACAC,EACA3I,EACAC,EALFw3C,EAOE7sC,EACAC,GACA,IAHA,sBAAEsC,EAAF,mBAAyBuqC,EAAqB,MANhDD,EAAArvC,4BAAA,KAAAmvC,GAUEpjD,KAAKi8B,IAAMonB,EACXrjD,KAAKm5C,QAAU,IAAIgC,EACjBn7C,KAAKi8B,IAAI5V,OAAO9B,MAChBvkB,KAAKi8B,IAAI5V,OAAO7B,QAElBxkB,KAAKwjD,WAAa,GAClBxjD,KAAKyjD,YAAc,KACnBzjD,KAAK0jD,eAAgB,EACrB1jD,KAAK2jD,IAAM,KACX3jD,KAAK4jD,MAAQ,KACb5jD,KAAKuU,WAAaA,EAClBvU,KAAKwU,KAAOA,EACZxU,KAAK6L,cAAgBA,EACrB7L,KAAK8L,cAAgBA,EACrB9L,KAAK6jD,WAAa,GAClB7jD,KAAK8jD,gBAAkB,KAGvB9jD,KAAK+jD,cAAgB,KACrB/jD,KAAKgkD,mBAAqB,GAC1BhkD,KAAKikD,WAAa,EAClBjkD,KAAKkkD,WAAa,GAClBlkD,KAAKmkD,aAAe,EACpBnkD,KAAKokD,UAAY,KACjBpkD,KAAKqkD,aAAe,KACpBrkD,KAAKskD,gBAAiB,EACtBtkD,KAAKujD,mBAAqBA,GAAsB,GAChDvjD,KAAKgZ,sBAAwBA,EAC7BhZ,KAAKukD,eAAiB,IAAI7K,EAAe15C,KAAK6L,eAC9C7L,KAAKwkD,eAAiB,IAAIn2D,IAC1B2R,KAAKyW,oBAAsBA,EAC3BzW,KAAKykD,cAAgB,EACrBzkD,KAAK0kD,aAAe,EACpB1kD,KAAK2kD,aAAe,EACpB3kD,KAAK0W,WAAaA,EAElB1W,KAAK4kD,wBAA0B,EAAE,EAAG,GACpC5kD,KAAK6kD,2BAA6B,KAClC7kD,KAAK8kD,kBAAoB,IAAIz2D,GAvC7B,CA0CF02D,SAAAA,CAAUl+C,GAAuB,IAAjBm+C,EAAA55D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAW,KACzB,MAAoB,kBAATyb,EACFA,EAAKrb,WAAW,MACnBwU,KAAKuU,WAAW5lB,IAAIkY,GACpB7G,KAAKwU,KAAK7lB,IAAIkY,GAEbm+C,CANwB,CASjCj9B,YAAAA,CAAAk9B,GAKG,IALU,UACXxqD,EADW,SAEX4b,EAFW,aAGX0C,GAAe,EAHJ,WAIXxC,EAAa,MAJf0uC,EAWE,MAAM1gC,EAAQvkB,KAAKi8B,IAAI5V,OAAO9B,MACxBC,EAASxkB,KAAKi8B,IAAI5V,OAAO7B,OAEzB0gC,EAAiBllD,KAAKi8B,IAAIqkB,UAKhC,GAJAtgD,KAAKi8B,IAAIqkB,UAAY/pC,GAAc,UACnCvW,KAAKi8B,IAAIkpB,SAAS,EAAG,EAAG5gC,EAAOC,GAC/BxkB,KAAKi8B,IAAIqkB,UAAY4E,EAEjBnsC,EAAc,CAChB,MAAMqsC,EAAoBplD,KAAKukD,eAAe3K,UAC5C,cACAr1B,EACAC,GAEFxkB,KAAKqlD,aAAerlD,KAAKi8B,IACzBj8B,KAAKolD,kBAAoBA,EAAkB/+B,OAC3CrmB,KAAKi8B,IAAMmpB,EAAkBn7B,QAC7BjqB,KAAKi8B,IAAI1hC,OAGTyF,KAAKi8B,IAAIxhC,cAAa,EAAA6M,EAAAkzC,qBAAoBx6C,KAAKqlD,cAZ/B,CAelBrlD,KAAKi8B,IAAI1hC,OACT6lD,EAAkBpgD,KAAKi8B,KACnBxhC,IACFuF,KAAKi8B,IAAIxhC,aAAaA,GACtBuF,KAAK0kD,aAAejqD,EAAU,GAC9BuF,KAAK2kD,aAAelqD,EAAU,IAEhCuF,KAAKi8B,IAAIxhC,aAAa4b,EAAS5b,WAC/BuF,KAAKykD,cAAgBpuC,EAASrB,MAE9BhV,KAAK+jD,eAAgB,EAAAz8C,EAAAkzC,qBAAoBx6C,KAAKi8B,IAvC7C,CA0CH5T,mBAAAA,CACE9Q,EACA+tC,EACAC,EACA99B,GAEA,MAAMhQ,EAAYF,EAAaE,UACzBD,EAAUD,EAAaC,QAC7B,IAAIpqB,EAAIk4D,GAAqB,EAC7B,MAAME,EAAe/tC,EAAUpsB,OAG/B,GAAIm6D,IAAiBp4D,EACnB,OAAOA,EAGT,MAAMq4D,EACJD,EAAep4D,EAp/BG,IAq/BU,oBAArBm4D,EACHG,EAAUD,EAAkBt5D,KAAKomD,MAx/BpB,GAw/B6C,EAChE,IAAIoT,EAAQ,EAEZ,MAAMpxC,EAAavU,KAAKuU,WAClBC,EAAOxU,KAAKwU,KAClB,IAAIoxC,EAEJ,OAAa,CACX,QAAgBt6D,IAAZm8B,GAAyBr6B,IAAMq6B,EAAQE,eAEzC,OADAF,EAAQo+B,QAAQz4D,EAAGm4D,GACZn4D,EAKT,GAFAw4D,EAAOpuC,EAAQpqB,GAEXw4D,IAASz+C,EAAAtN,IAAIC,WAEfkG,KAAK4lD,GAAMvlD,MAAML,KAAMyX,EAAUrqB,SAEjC,IAAK,MAAM04D,KAAYruC,EAAUrqB,GAAI,CACnC,MAAM24D,EAAWD,EAASt6D,WAAW,MAAQ+oB,EAAaC,EAI1D,IAAKuxC,EAASznC,IAAIwnC,GAEhB,OADAC,EAASp3D,IAAIm3D,EAAUP,GAChBn4D,CAP0B,CAevC,GAHAA,IAGIA,IAAMo4D,EACR,OAAOp4D,EAKT,GAAIq4D,KAAqBE,EA9hCP,GA8hCgC,CAChD,GAAIx5D,KAAKomD,MAAQmT,EAEf,OADAH,IACOn4D,EAETu4D,EAAQ,CALwC,CAjCvC,CArBb,CAqFF19B,UAAAA,GACEpR,kBAAAusC,EAAApjD,KAAAgmD,GAAA3jD,KAAArC,MAEAA,KAAKukD,eAAerpC,QACpBlb,KAAKwkD,eAAetpC,QAEpB,IAAK,MAAMy+B,KAAS35C,KAAK8kD,kBAAkBhqC,SAAU,CACnD,IAAK,MAAMuL,KAAUszB,EAAM7+B,SAEM,qBAAtBmrC,mBACP5/B,aAAkB4/B,oBAElB5/B,EAAO9B,MAAQ8B,EAAO7B,OAAS,GAGnCm1B,EAAMz+B,OAT6C,CAWrDlb,KAAK8kD,kBAAkB5pC,QACvBrE,kBAAAusC,EAAApjD,KAAAkmD,GAAA7jD,KAAArC,KAlBW,CAoCbmmD,WAAAA,CAAYC,EAAKxiD,GAIf,MAAM2gB,EAAQ6hC,EAAI7hC,MACZC,EAAS4hC,EAAI5hC,OACnB,IAYI6hC,EAAWC,EAZXC,EAAal5D,KAAKsW,IACpBtW,KAAKwsC,MAAMj2B,EAAiB,GAAIA,EAAiB,IACjD,GAEE4iD,EAAcn5D,KAAKsW,IACrBtW,KAAKwsC,MAAMj2B,EAAiB,GAAIA,EAAiB,IACjD,GAGE6iD,EAAaliC,EACfmiC,EAAcliC,EACZmiC,EAAc,YAElB,KACGJ,EAAa,GAAKE,EAAa,GAC/BD,EAAc,GAAKE,EAAc,GAClC,CACA,IAAI1uB,EAAWyuB,EACbxuB,EAAYyuB,EACVH,EAAa,GAAKE,EAAa,IAIjCzuB,EACEyuB,GAAc,MACVp5D,KAAKC,MAAMm5D,EAAa,GAAK,GAAK,EAClCp5D,KAAKk1D,KAAKkE,EAAa,GAC7BF,GAAcE,EAAazuB,GAEzBwuB,EAAc,GAAKE,EAAc,IAEnCzuB,EACEyuB,GAAe,MACXr5D,KAAKC,MAAMo5D,EAAc,GAAK,GAAK,EACnCr5D,KAAKk1D,KAAKmE,GAAe,EAC/BF,GAAeE,EAAczuB,GAE/BouB,EAAYrmD,KAAKukD,eAAe3K,UAC9B+M,EACA3uB,EACAC,GAEFquB,EAASD,EAAUp8B,QACnBq8B,EAAOM,UAAU,EAAG,EAAG5uB,EAAUC,GACjCquB,EAAOjqB,UACL+pB,EACA,EACA,EACAK,EACAC,EACA,EACA,EACA1uB,EACAC,GAEFmuB,EAAMC,EAAUhgC,OAChBogC,EAAazuB,EACb0uB,EAAczuB,EACd0uB,EAA8B,cAAhBA,EAA8B,YAAc,WA1C1D,CA4CF,MAAO,CACLP,MACAK,aACAC,cArE+B,CAyEnCG,iBAAAA,CAAkBT,GAChB,MAAMnqB,EAAMj8B,KAAKi8B,KACX,MAAE1X,EAAF,OAASC,GAAW4hC,EACpBlK,EAAYl8C,KAAKm5C,QAAQ+C,UACzB4K,EAAgB9mD,KAAKm5C,QAAQiD,YAC7B2K,GAAmB,EAAAz/C,EAAAkzC,qBAAoBve,GAE7C,IAAI0d,EAAO3iC,EAAUgwC,EAAQC,EAC7B,IAAKb,EAAI9hC,QAAU8hC,EAAIv/C,OAASu/C,EAAIc,MAAQ,EAAG,CAC7C,MAAMC,EAAUf,EAAI9hC,QAAU8hC,EAAIv/C,KAAKjX,OAOvConB,EAAWsT,KAAKC,UACdu8B,EACIC,EACA,CAACA,EAAiBvjD,MAAM,EAAG,GAAI04C,IAGrCvC,EAAQ35C,KAAK8kD,kBAAkBn2D,IAAIw4D,GAC9BxN,IACHA,EAAQ,IAAItrD,IACZ2R,KAAK8kD,kBAAkB7tC,IAAIkwC,EAASxN,IAEtC,MAAMyN,EAAczN,EAAMhrD,IAAIqoB,GAC9B,GAAIowC,IAAgBN,EASlB,MAAO,CACLzgC,OAAQ+gC,EACRlyC,QAVc7nB,KAAK6kC,MACnB7kC,KAAKkT,IAAIwmD,EAAiB,GAAIA,EAAiB,IAC7CA,EAAiB,IASnB5xC,QAPc9nB,KAAK6kC,MACnB7kC,KAAKkT,IAAIwmD,EAAiB,GAAIA,EAAiB,IAC7CA,EAAiB,KAQvBC,EAASI,CAnCoC,CAsC1CJ,IACHC,EAAajnD,KAAKukD,eAAe3K,UAAU,aAAcr1B,EAAOC,GAChEi7B,EAAmBwH,EAAWh9B,QAASm8B,IAQzC,IAAIiB,EAAelgD,EAAA3E,KAAK/H,UAAUssD,EAAkB,CAClD,EAAIxiC,EACJ,EACA,GACC,EAAIC,EACL,EACA,IAEF6iC,EAAelgD,EAAA3E,KAAK/H,UAAU4sD,EAAc,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI7iC,IAC7D,MAAM8iC,EAAQngD,EAAA3E,KAAKU,eAAe,CAAC,EAAG,GAAImkD,GACpCE,EAAQpgD,EAAA3E,KAAKU,eAAe,CAACqhB,EAAOC,GAAS6iC,GAC7C9iD,EAAO4C,EAAA3E,KAAK8B,cAAc,CAACgjD,EAAM,GAAIA,EAAM,GAAIC,EAAM,GAAIA,EAAM,KAC/DC,EAAan6D,KAAK6kC,MAAM3tB,EAAK,GAAKA,EAAK,KAAO,EAC9CkjD,EAAcp6D,KAAK6kC,MAAM3tB,EAAK,GAAKA,EAAK,KAAO,EAC/CmjD,EAAa1nD,KAAKukD,eAAe3K,UACrC,aACA4N,EACAC,GAEIE,EAAUD,EAAWz9B,QAMrB/U,EAAU7nB,KAAKkT,IAAI+mD,EAAM,GAAIC,EAAM,IACnCpyC,EAAU9nB,KAAKkT,IAAI+mD,EAAM,GAAIC,EAAM,IACzCI,EAAQ/2B,WAAW1b,GAAUC,GAC7BwyC,EAAQltD,aAAa4sD,GAEhBL,IAEHA,EAAShnD,KAAKmmD,YACZc,EAAW5gC,QACX,EAAA/e,EAAAsgD,4BAA2BD,IAE7BX,EAASA,EAAOZ,IACZzM,GAASmN,GACXnN,EAAM1iC,IAAID,EAAUgwC,IAIxBW,EAAQE,sBAAwBlF,GAC9B,EAAAr7C,EAAAkzC,qBAAoBmN,GACpBvB,EAAIxD,aAGN9I,EACE6N,EACAX,EACA,EACA,EACAA,EAAOziC,MACPyiC,EAAOxiC,OACP,EACA,EACAD,EACAC,GAEFmjC,EAAQ/G,yBAA2B,YAEnC,MAAMkH,EAAU3gD,EAAA3E,KAAK/H,WAAU,EAAA6M,EAAAsgD,4BAA2BD,GAAU,CAClE,EACA,EACA,EACA,GACCzyC,GACAC,IAgBH,OAdAwyC,EAAQrH,UAAYwG,EAChB5K,EAAU6L,WAAW9rB,EAAKj8B,KAAM8nD,EAASxO,EAAAkE,SAAShqD,MAClD0oD,EAEJyL,EAAQxC,SAAS,EAAG,EAAG5gC,EAAOC,GAE1Bm1B,IAAUmN,IAGZ9mD,KAAKukD,eAAetsC,OAAO,cAC3B0hC,EAAM1iC,IAAID,EAAU0wC,EAAWrhC,SAI1B,CACLA,OAAQqhC,EAAWrhC,OACnBnR,QAAS7nB,KAAK6kC,MAAMhd,GACpBC,QAAS9nB,KAAK6kC,MAAM/c,GA9ID,CAmJvBpb,YAAAA,CAAawqB,GACPA,IAAUvkB,KAAKm5C,QAAQoD,YACzBv8C,KAAK4kD,wBAAwB,IAAM,GAErC5kD,KAAKm5C,QAAQoD,UAAYh4B,EACzBvkB,KAAKi8B,IAAIsgB,UAAYh4B,CALH,CAQpBvqB,UAAAA,CAAW1R,GACT0X,KAAKi8B,IAAIwkB,QAAUuC,EAAgB16D,EADnB,CAIlB2R,WAAAA,CAAY3R,GACV0X,KAAKi8B,IAAIykB,SAAWuC,EAAiB36D,EADpB,CAInB4R,aAAAA,CAAc8tD,GACZhoD,KAAKi8B,IAAI0kB,WAAaqH,CADH,CAIrB7tD,OAAAA,CAAQ8tD,EAAWC,GACjB,MAAMjsB,EAAMj8B,KAAKi8B,SACO3wC,IAApB2wC,EAAIgkB,cACNhkB,EAAIgkB,YAAYgI,GAChBhsB,EAAIkkB,eAAiB+H,EAJK,CAQ9B9tD,kBAAAA,CAAmBob,GAAS,CAI5Bnb,WAAAA,CAAY8tD,GAAW,CAIvB7tD,SAAAA,CAAU8tD,GACR,IAAK,MAAOp5D,EAAKC,KAAUm5D,EACzB,OAAQp5D,GACN,IAAK,KACHgR,KAAKjG,aAAa9K,GAClB,MACF,IAAK,KACH+Q,KAAKhG,WAAW/K,GAChB,MACF,IAAK,KACH+Q,KAAK/F,YAAYhL,GACjB,MACF,IAAK,KACH+Q,KAAK9F,cAAcjL,GACnB,MACF,IAAK,IACH+Q,KAAK7F,QAAQlL,EAAM,GAAIA,EAAM,IAC7B,MACF,IAAK,KACH+Q,KAAK5F,mBAAmBnL,GACxB,MACF,IAAK,KACH+Q,KAAK3F,YAAYpL,GACjB,MACF,IAAK,OACH+Q,KAAK/D,QAAQhN,EAAM,GAAIA,EAAM,IAC7B,MACF,IAAK,KACH+Q,KAAKm5C,QAAQmD,YAAcrtD,EAC3B,MACF,IAAK,KACH+Q,KAAKm5C,QAAQkD,UAAYptD,EACzB+Q,KAAKi8B,IAAIukB,YAAcvxD,EACvB,MACF,IAAK,KACH+Q,KAAKi8B,IAAI2kB,yBAA2B3xD,EACpC,MACF,IAAK,QACH+Q,KAAKm5C,QAAQqD,YAAcvtD,EAAQ+Q,KAAKokD,UAAY,KACpDpkD,KAAKokD,UAAY,KACjBpkD,KAAKqoD,kBACL,MACF,IAAK,KACHroD,KAAKi8B,IAAIqR,OAASttC,KAAKm5C,QAAQsD,aAC7Bz8C,KAAK8L,cAAcygC,UAAUt9C,GA5CrB,CAkDlB,eAAIq5D,GACF,QAAStoD,KAAKqkD,YADE,CAIlBgE,eAAAA,GACE,MAAMC,EAActoD,KAAKsoD,YACrBtoD,KAAKm5C,QAAQqD,cAAgB8L,EAC/BtoD,KAAKuoD,kBACKvoD,KAAKm5C,QAAQqD,aAAe8L,GACtCtoD,KAAKwoD,cALS,CAmBlBD,cAAAA,GACE,GAAIvoD,KAAKsoD,YACP,MAAM,IAAIr+D,MAAM,qDAElB,MAAMu9D,EAAaxnD,KAAKi8B,IAAI5V,OAAO9B,MAC7BkjC,EAAcznD,KAAKi8B,IAAI5V,OAAO7B,OAC9BikC,EAAU,eAAiBzoD,KAAKikD,WAChCyE,EAAgB1oD,KAAKukD,eAAe3K,UACxC6O,EACAjB,EACAC,GAEFznD,KAAKqkD,aAAerkD,KAAKi8B,IACzBj8B,KAAKi8B,IAAMysB,EAAcz+B,QACzB,MAAMgS,EAAMj8B,KAAKi8B,IACjBA,EAAIgf,iBAAgB,EAAA3zC,EAAAkzC,qBAAoBx6C,KAAKqkD,eAC7CzE,EAAa5/C,KAAKqkD,aAAcpoB,GAr6CpC,SAAiCA,EAAK6jB,GACpC,GAAI7jB,EAAI0sB,iBACN,MAAM,IAAI1+D,MAAM,6CAElBgyC,EAAI2sB,eAAiB3sB,EAAI1hC,KACzB0hC,EAAI4sB,kBAAoB5sB,EAAIzhC,QAC5ByhC,EAAI6sB,iBAAmB7sB,EAAIrnB,OAC3BqnB,EAAI8sB,gBAAkB9sB,EAAIjnB,MAC1BinB,EAAI+sB,oBAAsB/sB,EAAIrL,UAC9BqL,EAAIgtB,oBAAsBhtB,EAAIxhC,UAC9BwhC,EAAIitB,uBAAyBjtB,EAAIgf,aACjChf,EAAIktB,yBAA2BltB,EAAImtB,eACnCntB,EAAIotB,eAAiBptB,EAAIvzC,KACzBuzC,EAAIqtB,iBAAmBrtB,EAAIvhC,OAC3BuhC,EAAIstB,iBAAmBttB,EAAIthC,OAC3BshC,EAAIutB,wBAA0BvtB,EAAIwtB,cAClCxtB,EAAIytB,eAAiBztB,EAAI13B,KACzB03B,EAAI0tB,oBAAsB1tB,EAAIlhC,UAC9BkhC,EAAI2tB,oBAAsB3tB,EAAI4tB,UAE9B5tB,EAAI0sB,iBAAmB,KACrB1sB,EAAI1hC,KAAO0hC,EAAI2sB,eACf3sB,EAAIzhC,QAAUyhC,EAAI4sB,kBAClB5sB,EAAIrnB,OAASqnB,EAAI6sB,iBACjB7sB,EAAIjnB,MAAQinB,EAAI8sB,gBAChB9sB,EAAIrL,UAAYqL,EAAI+sB,oBACpB/sB,EAAIxhC,UAAYwhC,EAAIgtB,oBACpBhtB,EAAIgf,aAAehf,EAAIitB,uBACvBjtB,EAAImtB,eAAiBntB,EAAIktB,yBAEzBltB,EAAIvzC,KAAOuzC,EAAIotB,eACfptB,EAAIvhC,OAASuhC,EAAIqtB,iBACjBrtB,EAAIthC,OAASshC,EAAIstB,iBACjBttB,EAAIwtB,cAAgBxtB,EAAIutB,wBACxBvtB,EAAI13B,KAAO03B,EAAIytB,eACfztB,EAAIlhC,UAAYkhC,EAAI0tB,oBACpB1tB,EAAI4tB,UAAY5tB,EAAI2tB,2BACb3tB,EAAI0sB,gBAAX,EAGF1sB,EAAI1hC,KAAO,WACTulD,EAAQvlD,OACRyF,KAAK4oD,gBAFuB,EAK9B3sB,EAAIzhC,QAAU,WACZslD,EAAQtlD,UACRwF,KAAK6oD,mBAF6B,EAKpC5sB,EAAIrL,UAAY,SAAsB1D,EAAGC,GACvC2yB,EAAQlvB,UAAU1D,EAAGC,GACrBntB,KAAKgpD,oBAAoB97B,EAAGC,EAFc,EAK5C8O,EAAIjnB,MAAQ,SAAkBkY,EAAGC,GAC/B2yB,EAAQ9qC,MAAMkY,EAAGC,GACjBntB,KAAK+oD,gBAAgB77B,EAAGC,EAFU,EAKpC8O,EAAIxhC,UAAY,SAAsBsJ,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GACnD6V,EAAQrlD,UAAUsJ,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GACjCjqC,KAAKipD,oBAAoBllD,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,EAFc,EAKxDhO,EAAIgf,aAAe,SAAyBl3C,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GACzD6V,EAAQ7E,aAAal3C,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GACpCjqC,KAAKkpD,uBAAuBnlD,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,EAFiB,EAK9DhO,EAAImtB,eAAiB,WACnBtJ,EAAQsJ,iBACRppD,KAAKmpD,0BAF2C,EAKlDltB,EAAIrnB,OAAS,SAAmBgiB,GAC9BkpB,EAAQlrC,OAAOgiB,GACf52B,KAAK8oD,iBAAiBlyB,EAFe,EAKvCqF,EAAIvzC,KAAO,SAAmB+sD,GAC5BqK,EAAQp3D,KAAK+sD,GACbz1C,KAAKqpD,eAAe5T,EAFc,EAKpCxZ,EAAIvhC,OAAS,SAAUwyB,EAAGC,GACxB2yB,EAAQplD,OAAOwyB,EAAGC,GAClBntB,KAAKspD,iBAAiBp8B,EAAGC,EAFE,EAK7B8O,EAAIthC,OAAS,SAAUuyB,EAAGC,GACxB2yB,EAAQnlD,OAAOuyB,EAAGC,GAClBntB,KAAKupD,iBAAiBr8B,EAAGC,EAFE,EAK7B8O,EAAIwtB,cAAgB,SAAUK,EAAMC,EAAMC,EAAMC,EAAM/8B,EAAGC,GACvD2yB,EAAQ2J,cAAcK,EAAMC,EAAMC,EAAMC,EAAM/8B,EAAGC,GACjDntB,KAAKwpD,wBAAwBM,EAAMC,EAAMC,EAAMC,EAAM/8B,EAAGC,EAFE,EAK5D8O,EAAI13B,KAAO,SAAU2oB,EAAGC,EAAG5I,EAAOC,GAChCs7B,EAAQv7C,KAAK2oB,EAAGC,EAAG5I,EAAOC,GAC1BxkB,KAAK0pD,eAAex8B,EAAGC,EAAG5I,EAAOC,EAFO,EAK1CyX,EAAIlhC,UAAY,WACd+kD,EAAQ/kD,YACRiF,KAAK2pD,qBAFqB,EAK5B1tB,EAAI4tB,UAAY,WACd/J,EAAQ+J,YACR7pD,KAAK4pD,qBAFqB,CA9GiB,CAs6C3CM,CAAwBjuB,EAAKj8B,KAAKqkD,cAElCrkD,KAAK1F,UAAU,CACb,CAAC,KAAM,eACP,CAAC,KAAM,GACP,CAAC,KAAM,IAtBM,CA0BjBkuD,YAAAA,GACE,IAAKxoD,KAAKsoD,YACR,MAAM,IAAIr+D,MAAM,+CAIlB+V,KAAKi8B,IAAI0sB,mBACT/I,EAAa5/C,KAAKi8B,IAAKj8B,KAAKqkD,cAC5BrkD,KAAKi8B,IAAMj8B,KAAKqkD,aAEhBrkD,KAAKqkD,aAAe,IAVP,CAaf8F,OAAAA,CAAQC,GACN,IAAKpqD,KAAKm5C,QAAQqD,YAChB,OAGG4N,GAGHA,EAAS,GAAK/8D,KAAKC,MAAM88D,EAAS,IAClCA,EAAS,GAAK/8D,KAAKC,MAAM88D,EAAS,IAClCA,EAAS,GAAK/8D,KAAKk1D,KAAK6H,EAAS,IACjCA,EAAS,GAAK/8D,KAAKk1D,KAAK6H,EAAS,KALjCA,EAAW,CAAC,EAAG,EAAGpqD,KAAKi8B,IAAI5V,OAAO9B,MAAOvkB,KAAKi8B,IAAI5V,OAAO7B,QAO3D,MAAMi9B,EAAQzhD,KAAKm5C,QAAQqD,YAG3BgF,EAFqBxhD,KAAKqkD,aAEC5C,EAAOzhD,KAAKi8B,IAAKmuB,GAG5CpqD,KAAKi8B,IAAI1hC,OACTyF,KAAKi8B,IAAIgf,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACrCj7C,KAAKi8B,IAAI2qB,UAAU,EAAG,EAAG5mD,KAAKi8B,IAAI5V,OAAO9B,MAAOvkB,KAAKi8B,IAAI5V,OAAO7B,QAChExkB,KAAKi8B,IAAIzhC,SAtBO,CAyBlBD,IAAAA,GACMyF,KAAKsoD,aAIP1I,EAAa5/C,KAAKi8B,IAAKj8B,KAAKqkD,cAG5BrkD,KAAKqkD,aAAa9pD,QAElByF,KAAKi8B,IAAI1hC,OAEX,MAAM8vD,EAAMrqD,KAAKm5C,QACjBn5C,KAAKwjD,WAAWpzD,KAAKi6D,GACrBrqD,KAAKm5C,QAAUkR,EAAI1/B,OAdd,CAiBPnwB,OAAAA,GACiC,IAA3BwF,KAAKwjD,WAAWn4D,QAAgB2U,KAAKsoD,aACvCtoD,KAAKwoD,eAEwB,IAA3BxoD,KAAKwjD,WAAWn4D,SAClB2U,KAAKm5C,QAAUn5C,KAAKwjD,WAAW8G,MAC3BtqD,KAAKsoD,aAGPtoD,KAAKqkD,aAAa7pD,UAClBolD,EAAa5/C,KAAKqkD,aAAcrkD,KAAKi8B,MAErCj8B,KAAKi8B,IAAIzhC,UAEXwF,KAAKqoD,kBAGLroD,KAAKyjD,YAAc,KAEnBzjD,KAAK4kD,wBAAwB,IAAM,EACnC5kD,KAAK6kD,2BAA6B,KApB5B,CAwBVpqD,SAAAA,CAAUsJ,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GACvBjqC,KAAKi8B,IAAIxhC,UAAUsJ,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GAElCjqC,KAAK4kD,wBAAwB,IAAM,EACnC5kD,KAAK6kD,2BAA6B,IAJR,CAQ5BzlD,aAAAA,CAAcmrD,EAAK1qB,EAAM/8B,GACvB,MAAMm5B,EAAMj8B,KAAKi8B,IACXkd,EAAUn5C,KAAKm5C,QACrB,IAEIqR,EAAQC,EAFRv9B,EAAIisB,EAAQjsB,EACdC,EAAIgsB,EAAQhsB,EAEd,MAAM45B,GAAmB,EAAAz/C,EAAAkzC,qBAAoBve,GAQvCyuB,EACqB,IAAxB3D,EAAiB,IAAoC,IAAxBA,EAAiB,IACtB,IAAxBA,EAAiB,IAAoC,IAAxBA,EAAiB,GAC3C4D,EAAkBD,EAAkB5nD,EAAOU,MAAM,GAAK,KAE5D,IAAK,IAAIpW,EAAI,EAAG6Y,EAAI,EAAGhY,EAAKs8D,EAAIl/D,OAAQ+B,EAAIa,EAAIb,IAC9C,OAAiB,EAATm9D,EAAIn9D,IACV,KAAK+Z,EAAAtN,IAAImB,UACPkyB,EAAI2S,EAAK55B,KACTknB,EAAI0S,EAAK55B,KACT,MAAMse,EAAQsb,EAAK55B,KACbue,EAASqb,EAAK55B,KAEd2kD,EAAK19B,EAAI3I,EACTsmC,EAAK19B,EAAI3I,EACfyX,EAAIvhC,OAAOwyB,EAAGC,GACA,IAAV5I,GAA0B,IAAXC,EACjByX,EAAIthC,OAAOiwD,EAAIC,IAEf5uB,EAAIthC,OAAOiwD,EAAIz9B,GACf8O,EAAIthC,OAAOiwD,EAAIC,GACf5uB,EAAIthC,OAAOuyB,EAAG29B,IAEXH,GACHvR,EAAQ+D,iBAAiB6J,EAAkB,CAAC75B,EAAGC,EAAGy9B,EAAIC,IAExD5uB,EAAIlhC,YACJ,MACF,KAAKoM,EAAAtN,IAAIa,OACPwyB,EAAI2S,EAAK55B,KACTknB,EAAI0S,EAAK55B,KACTg2B,EAAIvhC,OAAOwyB,EAAGC,GACTu9B,GACHvR,EAAQ0D,iBAAiBkK,EAAkB75B,EAAGC,GAEhD,MACF,KAAKhmB,EAAAtN,IAAIc,OACPuyB,EAAI2S,EAAK55B,KACTknB,EAAI0S,EAAK55B,KACTg2B,EAAIthC,OAAOuyB,EAAGC,GACTu9B,GACHvR,EAAQ0D,iBAAiBkK,EAAkB75B,EAAGC,GAEhD,MACF,KAAKhmB,EAAAtN,IAAIe,QACP4vD,EAASt9B,EACTu9B,EAASt9B,EACTD,EAAI2S,EAAK55B,EAAI,GACbknB,EAAI0S,EAAK55B,EAAI,GACbg2B,EAAIwtB,cACF5pB,EAAK55B,GACL45B,EAAK55B,EAAI,GACT45B,EAAK55B,EAAI,GACT45B,EAAK55B,EAAI,GACTinB,EACAC,GAEFgsB,EAAQiE,sBACN2J,EACAyD,EACAC,EACA5qB,EAAK55B,GACL45B,EAAK55B,EAAI,GACT45B,EAAK55B,EAAI,GACT45B,EAAK55B,EAAI,GACTinB,EACAC,EACAw9B,GAEF1kD,GAAK,EACL,MACF,KAAKkB,EAAAtN,IAAIgB,SACP2vD,EAASt9B,EACTu9B,EAASt9B,EACT8O,EAAIwtB,cACFv8B,EACAC,EACA0S,EAAK55B,GACL45B,EAAK55B,EAAI,GACT45B,EAAK55B,EAAI,GACT45B,EAAK55B,EAAI,IAEXkzC,EAAQiE,sBACN2J,EACAyD,EACAC,EACAv9B,EACAC,EACA0S,EAAK55B,GACL45B,EAAK55B,EAAI,GACT45B,EAAK55B,EAAI,GACT45B,EAAK55B,EAAI,GACT0kD,GAEFz9B,EAAI2S,EAAK55B,EAAI,GACbknB,EAAI0S,EAAK55B,EAAI,GACbA,GAAK,EACL,MACF,KAAKkB,EAAAtN,IAAIiB,SACP0vD,EAASt9B,EACTu9B,EAASt9B,EACTD,EAAI2S,EAAK55B,EAAI,GACbknB,EAAI0S,EAAK55B,EAAI,GACbg2B,EAAIwtB,cAAc5pB,EAAK55B,GAAI45B,EAAK55B,EAAI,GAAIinB,EAAGC,EAAGD,EAAGC,GACjDgsB,EAAQiE,sBACN2J,EACAyD,EACAC,EACA5qB,EAAK55B,GACL45B,EAAK55B,EAAI,GACTinB,EACAC,EACAD,EACAC,EACAw9B,GAEF1kD,GAAK,EACL,MACF,KAAKkB,EAAAtN,IAAIkB,UACPkhC,EAAIlhC,YAKN2vD,GACFvR,EAAQgE,wBAAwB4J,EAAkB4D,GAGpDxR,EAAQyD,gBAAgB1vB,EAAGC,EA9II,CAiJjCpyB,SAAAA,GACEiF,KAAKi8B,IAAIlhC,WADC,CAIZE,MAAAA,GAA2B,IAApB6vD,IAAA1/D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACL,MAAM6wC,EAAMj8B,KAAKi8B,IACXkgB,EAAcn8C,KAAKm5C,QAAQgD,YAGjClgB,EAAIukB,YAAcxgD,KAAKm5C,QAAQmD,YAC3Bt8C,KAAKskD,iBACoB,kBAAhBnI,GAA4B,OAAAA,QAAA,IAAAA,GAAAA,EAAa4L,YAClD9rB,EAAI1hC,OACJ0hC,EAAIokB,YAAclE,EAAY4L,WAC5B9rB,EACAj8B,MACA,EAAAsH,EAAAsgD,4BAA2B3rB,GAC3Bqd,EAAAkE,SAAS/pD,QAEXuM,KAAK+qD,kBAAmC,GACxC9uB,EAAIzhC,WAEJwF,KAAK+qD,kBAAmC,IAGxCD,GACF9qD,KAAK8qD,YAAY9qD,KAAKm5C,QAAQ2E,6BAGhC7hB,EAAIukB,YAAcxgD,KAAKm5C,QAAQkD,SAzBN,CA4B3BnhD,WAAAA,GACE8E,KAAKjF,YACLiF,KAAK/E,QAFO,CAKdE,IAAAA,GAAyB,IAApB2vD,IAAA1/D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACH,MAAM6wC,EAAMj8B,KAAKi8B,IACXigB,EAAYl8C,KAAKm5C,QAAQ+C,UAE/B,IAAI8O,GAAc,EADIhrD,KAAKm5C,QAAQiD,cAIjCngB,EAAI1hC,OACJ0hC,EAAIqkB,UAAYpE,EAAU6L,WACxB9rB,EACAj8B,MACA,EAAAsH,EAAAsgD,4BAA2B3rB,GAC3Bqd,EAAAkE,SAAShqD,MAEXw3D,GAAc,GAGhB,MAAMxmD,EAAYxE,KAAKm5C,QAAQ2E,4BAC3B99C,KAAKskD,gBAAgC,OAAd9/C,IACrBxE,KAAK0jD,eACPznB,EAAI9gC,KAAK,WACT6E,KAAK0jD,eAAgB,GAErBznB,EAAI9gC,QAIJ6vD,GACF/uB,EAAIzhC,UAEFswD,GACF9qD,KAAK8qD,YAAYtmD,EA/BI,CAmCzBpJ,MAAAA,GACE4E,KAAK0jD,eAAgB,EACrB1jD,KAAK7E,MAFE,CAKTE,UAAAA,GACE2E,KAAK7E,MAAK,GACV6E,KAAK/E,QAAO,GAEZ+E,KAAK8qD,aAJM,CAObxvD,YAAAA,GACE0E,KAAK0jD,eAAgB,EACrB1jD,KAAK3E,YAFQ,CAKfE,eAAAA,GACEyE,KAAKjF,YACLiF,KAAK3E,YAFW,CAKlBG,iBAAAA,GACEwE,KAAK0jD,eAAgB,EACrB1jD,KAAKjF,YACLiF,KAAK3E,YAHa,CAMpBI,OAAAA,GACEuE,KAAK8qD,aADG,CAKVpiE,IAAAA,GACEsX,KAAKyjD,YAAcP,CADd,CAIPxnD,MAAAA,GACEsE,KAAKyjD,YAAcN,CADZ,CAKTxnD,SAAAA,GACEqE,KAAKm5C,QAAQoC,WAAap0C,EAAAvW,gBAC1BoP,KAAKm5C,QAAQqC,gBAAkB,EAC/Bx7C,KAAKm5C,QAAQjsB,EAAIltB,KAAKm5C,QAAQwC,MAAQ,EACtC37C,KAAKm5C,QAAQhsB,EAAIntB,KAAKm5C,QAAQyC,MAAQ,CAJ5B,CAOZhgD,OAAAA,GACE,MAAMqvD,EAAQjrD,KAAKkrD,iBACbjvB,EAAMj8B,KAAKi8B,IACjB,QAAc3wC,IAAV2/D,EAAJ,CAKAhvB,EAAI1hC,OACJ0hC,EAAI4tB,YACJ,IAAK,MAAMsB,KAAQF,EACjBhvB,EAAIgf,gBAAgBkQ,EAAK1wD,WACzBwhC,EAAIrL,UAAUu6B,EAAKj+B,EAAGi+B,EAAKh+B,GAC3Bg+B,EAAKC,UAAUnvB,EAAKkvB,EAAK9P,UAE3Bpf,EAAIzhC,UACJyhC,EAAIvzC,OACJuzC,EAAI4tB,mBACG7pD,KAAKkrD,gBAfa,MACvBjvB,EAAI4tB,WAJE,CAqBVhuD,cAAAA,CAAewvD,GACbrrD,KAAKm5C,QAAQ0C,YAAcwP,CADL,CAIxBvvD,cAAAA,CAAeuvD,GACbrrD,KAAKm5C,QAAQ2C,YAAcuP,CADL,CAIxBtvD,SAAAA,CAAUiZ,GACRhV,KAAKm5C,QAAQ4C,WAAa/mC,EAAQ,GADnB,CAIjBhZ,UAAAA,CAAW0/C,GACT17C,KAAKm5C,QAAQuC,SAAWA,CADN,CAIpBz/C,OAAAA,CAAQqvD,EAAazxC,GAAM,IAAA0xC,EACzB,MAAMC,EAAUxrD,KAAKuU,WAAW5lB,IAAI28D,GAC9BnS,EAAUn5C,KAAKm5C,QAErB,IAAKqS,EACH,MAAM,IAAIvhE,MAAJ,uBAAA0B,OAAiC2/D,IAsBzC,GApBAnS,EAAQsC,WAAa+P,EAAQ/P,YAAct0C,EAAAtW,qBAIb,IAA1BsoD,EAAQsC,WAAW,IAAsC,IAA1BtC,EAAQsC,WAAW,KACpD,EAAAt0C,EAAA5d,MAAK,gCAAkC+hE,GAKrCzxC,EAAO,GACTA,GAAQA,EACRs/B,EAAQsS,eAAiB,GAEzBtS,EAAQsS,cAAgB,EAG1BzrD,KAAKm5C,QAAQr1B,KAAO0nC,EACpBxrD,KAAKm5C,QAAQkC,SAAWxhC,EAEpB2xC,EAAQE,YACV,OAGF,MAAMllE,EAAOglE,EAAQzV,YAAc,aAC7B4V,GACJ,QAAAJ,EAAAC,EAAQjV,sBAAR,IAAAgV,OAAA,EAAAA,EAAwB9S,MAAxB,IAAA9sD,OAAmCnF,EAAK,OAAAmF,OAAK6/D,EAAQI,cAEvD,IAAIC,EAAO,SACPL,EAAQrM,MACV0M,EAAO,MACEL,EAAQK,OACjBA,EAAO,QAET,MAAMC,EAASN,EAAQM,OAAS,SAAW,SAM3C,IAAIC,EAAkBlyC,EAClBA,EAn4Dc,GAo4DhBkyC,EAp4DgB,GAq4DPlyC,EAn4DO,MAo4DhBkyC,EAp4DgB,KAs4DlB/rD,KAAKm5C,QAAQmC,cAAgBzhC,EAAOkyC,EAEpC/rD,KAAKi8B,IAAInY,KAAT,GAAAn4B,OAAmBmgE,EAAO,KAAAngE,OAAGkgE,EAAK,KAAAlgE,OAAGogE,EAAgB,OAAApgE,OAAKggE,EAvDjC,CA0D3BzvD,oBAAAA,CAAqB8rC,GACnBhoC,KAAKm5C,QAAQ6C,kBAAoBhU,CADR,CAI3B7rC,WAAAA,CAAY6vD,GACVhsD,KAAKm5C,QAAQ8C,SAAW+P,CADR,CAIlB5vD,QAAAA,CAAS8wB,EAAGC,GACVntB,KAAKm5C,QAAQjsB,EAAIltB,KAAKm5C,QAAQwC,OAASzuB,EACvCltB,KAAKm5C,QAAQhsB,EAAIntB,KAAKm5C,QAAQyC,OAASzuB,CAF1B,CAKf9wB,kBAAAA,CAAmB6wB,EAAGC,GACpBntB,KAAKhE,YAAYmxB,GACjBntB,KAAK5D,SAAS8wB,EAAGC,EAFM,CAKzB7wB,aAAAA,CAAcyH,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GAC3BjqC,KAAKm5C,QAAQoC,WAAa,CAACx3C,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GAC1CjqC,KAAKm5C,QAAQqC,gBAAkBnuD,KAAKwsC,MAAM91B,EAAGnB,GAE7C5C,KAAKm5C,QAAQjsB,EAAIltB,KAAKm5C,QAAQwC,MAAQ,EACtC37C,KAAKm5C,QAAQhsB,EAAIntB,KAAKm5C,QAAQyC,MAAQ,CALR,CAQhCr/C,QAAAA,GACEyD,KAAK5D,SAAS,EAAG4D,KAAKm5C,QAAQuC,QADrB,CAIXuQ,SAAAA,CAAUjT,EAAW9rB,EAAGC,EAAG++B,GACzB,MAAMjwB,EAAMj8B,KAAKi8B,IACXkd,EAAUn5C,KAAKm5C,QACfr1B,EAAOq1B,EAAQr1B,KACfk4B,EAAoB7C,EAAQ6C,kBAC5BX,EAAWlC,EAAQkC,SAAWlC,EAAQmC,cACtC6Q,EACJnQ,EAAoB70C,EAAA5T,kBAAkBS,iBAClCo4D,KACJpQ,EAAoB70C,EAAA5T,kBAAkBU,kBAElCmoD,EAAcjD,EAAQiD,cAAgBt4B,EAAKwyB,YAEjD,IAAI8U,GACAtnC,EAAK9Y,iBAAmBohD,GAAkBhQ,KAC5CgP,EAAYtnC,EAAKi1B,iBAAiB/4C,KAAKuU,WAAYykC,IAGjDl1B,EAAK9Y,iBAAmBoxC,GAC1BngB,EAAI1hC,OACJ0hC,EAAIrL,UAAU1D,EAAGC,GACjB8O,EAAI4tB,YACJuB,EAAUnvB,EAAKof,GACX6Q,GACFjwB,EAAIgf,gBAAgBiR,GAGpBC,IAAmBhlD,EAAA5T,kBAAkBC,MACrC24D,IAAmBhlD,EAAA5T,kBAAkBG,aAErCuoC,EAAI9gC,OAGJgxD,IAAmBhlD,EAAA5T,kBAAkBE,QACrC04D,IAAmBhlD,EAAA5T,kBAAkBG,aAErCuoC,EAAIhhC,SAENghC,EAAIzhC,YAGF2xD,IAAmBhlD,EAAA5T,kBAAkBC,MACrC24D,IAAmBhlD,EAAA5T,kBAAkBG,aAErCuoC,EAAIic,SAASc,EAAW9rB,EAAGC,GAG3Bg/B,IAAmBhlD,EAAA5T,kBAAkBE,QACrC04D,IAAmBhlD,EAAA5T,kBAAkBG,aAErCuoC,EAAIowB,WAAWrT,EAAW9rB,EAAGC,IAI7Bi/B,IACapsD,KAAKkrD,mBAALlrD,KAAKkrD,iBAAqB,KACnC96D,KAAK,CACTqK,WAAW,EAAA6M,EAAAkzC,qBAAoBve,GAC/B/O,IACAC,IACAkuB,WACA+P,aA7DuC,CAkE7C,2BAAIkB,GAGF,MAAQriC,QAASgS,GAAQj8B,KAAKukD,eAAe3K,UAC3C,0BACA,GACA,IAEF3d,EAAIjnB,MAAM,IAAK,GACfinB,EAAIic,SAAS,IAAK,EAAG,IACrB,MAAMrxC,EAAOo1B,EAAIK,aAAa,EAAG,EAAG,GAAI,IAAIz1B,KAC5C,IAAIgd,GAAU,EACd,IAAK,IAAIz2B,EAAI,EAAGA,EAAIyZ,EAAKxb,OAAQ+B,GAAK,EACpC,GAAIyZ,EAAKzZ,GAAK,GAAKyZ,EAAKzZ,GAAK,IAAK,CAChCy2B,GAAU,EACV,KAFgC,CAKpC,OAAO,EAAA1c,EAAA3H,QAAOQ,KAAM,0BAA2B6jB,EAlBnB,CAqB9BrnB,QAAAA,CAAS+vD,GACP,MAAMpT,EAAUn5C,KAAKm5C,QACfr1B,EAAOq1B,EAAQr1B,KACrB,GAAIA,EAAK4nC,YACP,OAAO1rD,KAAKwsD,cAAcD,GAG5B,MAAMlR,EAAWlC,EAAQkC,SACzB,GAAiB,IAAbA,EACF,OAGF,MAAMpf,EAAMj8B,KAAKi8B,IACXqf,EAAgBnC,EAAQmC,cACxBO,EAAc1C,EAAQ0C,YACtBC,EAAc3C,EAAQ2C,YACtB2P,EAAgBtS,EAAQsS,cACxB1P,EAAa5C,EAAQ4C,WAAa0P,EAClCgB,EAAeF,EAAOlhE,OACtBqhE,EAAW5oC,EAAK4oC,SAChBC,EAAaD,EAAW,GAAK,EAC7BE,EAAkB9oC,EAAK8oC,gBACvBC,EAAoBxR,EAAWlC,EAAQsC,WAAW,GAElDqR,EACJ3T,EAAQ6C,oBAAsB70C,EAAA5T,kBAAkBC,OAC/CswB,EAAK9Y,kBACLmuC,EAAQiD,YAYX,IAAI8P,EACJ,GAXAjwB,EAAI1hC,OACJ0hC,EAAIxhC,aAAa0+C,EAAQoC,YACzBtf,EAAIrL,UAAUuoB,EAAQjsB,EAAGisB,EAAQhsB,EAAIgsB,EAAQ8C,UAEzCwP,EAAgB,EAClBxvB,EAAIjnB,MAAM+mC,GAAa,GAEvB9f,EAAIjnB,MAAM+mC,EAAY,GAIpB5C,EAAQiD,YAAa,CACvBngB,EAAI1hC,OACJ,MAAMwyD,EAAU5T,EAAQ+C,UAAU6L,WAChC9rB,EACAj8B,MACA,EAAAsH,EAAAsgD,4BAA2B3rB,GAC3Bqd,EAAAkE,SAAShqD,MAEX04D,GAAmB,EAAA5kD,EAAAkzC,qBAAoBve,GACvCA,EAAIzhC,UACJyhC,EAAIqkB,UAAYyM,CAVO,CAazB,IAAIxQ,EAAYpD,EAAQoD,UACxB,MAAMvnC,EAAQmkC,EAAQqC,gBACtB,GAAc,IAAVxmC,GAA6B,IAAdunC,EAAiB,CAClC,MAAM4P,EACJhT,EAAQ6C,kBAAoB70C,EAAA5T,kBAAkBS,iBAE9Cm4D,IAAmBhlD,EAAA5T,kBAAkBE,QACrC04D,IAAmBhlD,EAAA5T,kBAAkBG,cAErC6oD,EAAYv8C,KAAKgtD,sBAPe,MAUlCzQ,GAAavnC,EAUf,GAPsB,IAAlBsmC,IACFrf,EAAIjnB,MAAMsmC,EAAeA,GACzBiB,GAAajB,GAGfrf,EAAIsgB,UAAYA,EAEZz4B,EAAKmpC,mBAAoB,CAC3B,MAAMC,EAAQ,GACd,IAAI3oC,EAAQ,EACZ,IAAK,MAAM4oC,KAASZ,EAClBW,EAAM98D,KAAK+8D,EAAMC,SACjB7oC,GAAS4oC,EAAM5oC,MAOjB,OALA0X,EAAIic,SAASgV,EAAMtgE,KAAK,IAAK,EAAG,GAChCusD,EAAQjsB,GAAK3I,EAAQsoC,EAAoB9Q,EACzC9f,EAAIzhC,eACJwF,KAAKmqD,SAVsB,CAe7B,IACE/8D,EADE8/B,EAAI,EAER,IAAK9/B,EAAI,EAAGA,EAAIq/D,IAAgBr/D,EAAG,CACjC,MAAM+/D,EAAQZ,EAAOn/D,GACrB,GAAqB,kBAAV+/D,EAAoB,CAC7BjgC,GAAMy/B,EAAaQ,EAAQ9R,EAAY,IACvC,QAF6B,CAK/B,IAAIgS,GAAgB,EACpB,MAAMhC,GAAW8B,EAAMG,QAAUxR,EAAc,GAAKD,EAC9C7C,EAAYmU,EAAMI,SAClBC,EAASL,EAAMK,OACrB,IAAIC,EAASC,EACTnpC,EAAQ4oC,EAAM5oC,MAClB,GAAImoC,EAAU,CACZ,MAAMiB,EAAUR,EAAMQ,SAAWf,EAC3BgB,IACFT,EAAMQ,QAAUA,EAAQ,GAAa,GAARppC,GAAesoC,EAC1CgB,EAAKF,EAAQ,GAAKd,EAExBtoC,EAAQopC,GAAWA,EAAQ,GAAKppC,EAChCkpC,EAAUG,EAAKtS,EACfoS,GAAWxgC,EAAI2gC,GAAMvS,CART,MAUZmS,EAAUvgC,EAAIouB,EACdoS,EAAU,EAGZ,GAAI5pC,EAAKgqC,WAAavpC,EAAQ,EAAG,CAI/B,MAAMwpC,EACiC,IAAnC9xB,EAAI+xB,YAAYhV,GAAWz0B,MAAgB82B,EAC7CC,EACF,GAAI/2B,EAAQwpC,GAAiB/tD,KAAKssD,wBAAyB,CACzD,MAAM2B,EAAkB1pC,EAAQwpC,EAChCV,GAAgB,EAChBpxB,EAAI1hC,OACJ0hC,EAAIjnB,MAAMi5C,EAAiB,GAC3BR,GAAWQ,CAL8C,MAMhD1pC,IAAUwpC,IACnBN,IACKlpC,EAAQwpC,GAAiB,IAAQ1S,EAAYC,EAfrB,CAqBjC,GAAIt7C,KAAKskD,iBAAmB6I,EAAMe,UAAYpqC,EAAKwyB,aACjD,GAAIwW,IAAmBU,EAErBvxB,EAAIic,SAASc,EAAWyU,EAASC,QAGjC,GADA1tD,KAAKisD,UAAUjT,EAAWyU,EAASC,EAASxB,GACxCsB,EAAQ,CACV,MAAMW,EACJV,EAAWpS,EAAWmS,EAAOjW,OAAOrqB,EAAKouB,EACrC8S,EACJV,EAAWrS,EAAWmS,EAAOjW,OAAOpqB,EAAKmuB,EAC3Ct7C,KAAKisD,UACHuB,EAAOD,SACPY,EACAC,EACAlC,EATQ,CAkBhBh/B,GAHkBw/B,EACdnoC,EAAQsoC,EAAoBxB,EAAUI,EACtClnC,EAAQsoC,EAAoBxB,EAAUI,EAGtC4B,GACFpxB,EAAIzhC,SA3E2B,CA8E/BkyD,EACFvT,EAAQhsB,GAAKD,EAEbisB,EAAQjsB,GAAKA,EAAI6uB,EAEnB9f,EAAIzhC,UACJwF,KAAKmqD,SAhLU,CAqLjBqC,aAAAA,CAAcD,GAEZ,MAAMtwB,EAAMj8B,KAAKi8B,IACXkd,EAAUn5C,KAAKm5C,QACfr1B,EAAOq1B,EAAQr1B,KACfu3B,EAAWlC,EAAQkC,SACnBoQ,EAAgBtS,EAAQsS,cACxBkB,EAAa7oC,EAAK4oC,SAAW,GAAK,EAClC7Q,EAAc1C,EAAQ0C,YACtBC,EAAc3C,EAAQ2C,YACtBC,EAAa5C,EAAQ4C,WAAa0P,EAClChQ,EAAatC,EAAQsC,YAAct0C,EAAAtW,qBACnC47D,EAAeF,EAAOlhE,OAG5B,IAAI+B,EAAG+/D,EAAO5oC,EAAO8pC,EAErB,GAHElV,EAAQ6C,oBAAsB70C,EAAA5T,kBAAkBI,WAGd,IAAb0nD,EAAvB,CAYA,IATAr7C,KAAK4kD,wBAAwB,IAAM,EACnC5kD,KAAK6kD,2BAA6B,KAElC5oB,EAAI1hC,OACJ0hC,EAAIxhC,aAAa0+C,EAAQoC,YACzBtf,EAAIrL,UAAUuoB,EAAQjsB,EAAGisB,EAAQhsB,GAEjC8O,EAAIjnB,MAAM+mC,EAAY0P,GAEjBr+D,EAAI,EAAGA,EAAIq/D,IAAgBr/D,EAAG,CAEjC,GADA+/D,EAAQZ,EAAOn/D,GACM,kBAAV+/D,EAAoB,CAC7BkB,EAAiB1B,EAAaQ,EAAQ9R,EAAY,IAClDr7C,KAAKi8B,IAAIrL,UAAUy9B,EAAe,GAClClV,EAAQjsB,GAAKmhC,EAAgBtS,EAC7B,QAJ6B,CAO/B,MAAMsP,GAAW8B,EAAMG,QAAUxR,EAAc,GAAKD,EAC9CtkC,EAAeuM,EAAKwqC,qBAAqBnB,EAAMoB,gBAChDh3C,GAIDvX,KAAKskD,iBACPtkD,KAAK8jD,gBAAkBqJ,EACvBntD,KAAKzF,OACL0hC,EAAIjnB,MAAMqmC,EAAUA,GACpBpf,EAAIxhC,aAAaghD,GACjBz7C,KAAKqoB,oBAAoB9Q,GACzBvX,KAAKxF,WAIP+pB,EADoBpd,EAAA3E,KAAKU,eAAe,CAACiqD,EAAM5oC,MAAO,GAAIk3B,GACtC,GAAKJ,EAAWgQ,EAEpCpvB,EAAIrL,UAAUrM,EAAO,GACrB40B,EAAQjsB,GAAK3I,EAAQw3B,IAhBnB,EAAA50C,EAAA5d,MAAA,oBAAAoC,OAAyBwhE,EAAMoB,eAAe,uBAZf,CA8BnCtyB,EAAIzhC,UACJwF,KAAK8jD,gBAAkB,IA3CgB,CAjBnB,CAgEtBlnD,YAAAA,CAAa4xD,EAAQC,GAAS,CAK9B5xD,qBAAAA,CAAsB2xD,EAAQC,EAAQC,EAAKC,EAAKC,EAAKC,GACnD7uD,KAAKi8B,IAAI13B,KAAKmqD,EAAKC,EAAKC,EAAMF,EAAKG,EAAMF,GACzC3uD,KAAKi8B,IAAIvzC,OACTsX,KAAKvE,SAHmD,CAO1DqzD,iBAAAA,CAAkBC,GAChB,IAAIhC,EACJ,GAAc,kBAAVgC,EAAG,GAAwB,CAC7B,MAAM3uB,EAAQ2uB,EAAG,GACXhL,EAAgB/jD,KAAK+jD,gBAAiB,EAAAz8C,EAAAkzC,qBAAoBx6C,KAAKi8B,KAC/D+yB,EAAwB,CAC5BC,qBAAsBhzB,GACb,IAAInU,EACTmU,EACAj8B,KAAKuU,WACLvU,KAAKwU,KACLxU,KAAK6L,cACL7L,KAAK8L,cACL,CACEkN,sBAAuBhZ,KAAKgZ,sBAC5BuqC,mBAAoBvjD,KAAKujD,sBAKjCwJ,EAAU,IAAIzT,EAAA4V,cACZH,EACA3uB,EACApgC,KAAKi8B,IACL+yB,EACAjL,EAvB2B,MA0B7BgJ,EAAU/sD,KAAKmvD,YAAYJ,EAAG,GAAIA,EAAG,IAEvC,OAAOhC,CA9Ba,CAiCtB9vD,eAAAA,GACE+C,KAAKm5C,QAAQgD,YAAcn8C,KAAK8uD,kBAAkB1jE,UADlC,CAIlB+R,aAAAA,GACE6C,KAAKm5C,QAAQ+C,UAAYl8C,KAAK8uD,kBAAkB1jE,WAChD4U,KAAKm5C,QAAQiD,aAAc,CAFb,CAKhB9+C,iBAAAA,CAAkBoF,EAAGC,EAAGC,GACtB,MAAMw9B,EAAQj5B,EAAA3E,KAAKC,aAAaC,EAAGC,EAAGC,GACtC5C,KAAKi8B,IAAIokB,YAAcjgB,EACvBpgC,KAAKm5C,QAAQgD,YAAc/b,CAHF,CAM3B7iC,eAAAA,CAAgBmF,EAAGC,EAAGC,GACpB,MAAMw9B,EAAQj5B,EAAA3E,KAAKC,aAAaC,EAAGC,EAAGC,GACtC5C,KAAKi8B,IAAIqkB,UAAYlgB,EACrBpgC,KAAKm5C,QAAQ+C,UAAY9b,EACzBpgC,KAAKm5C,QAAQiD,aAAc,CAJJ,CAOzB+S,WAAAA,CAAYtpC,GAAsB,IAC5BknC,EADaqC,EAAAhkE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAS,KAW1B,OATI4U,KAAKwkD,eAAelmC,IAAIuH,GAC1BknC,EAAU/sD,KAAKwkD,eAAe71D,IAAIk3B,IAElCknC,GAAU,EAAAzT,EAAA+V,mBAAkBrvD,KAAK+kD,UAAUl/B,IAC3C7lB,KAAKwkD,eAAevtC,IAAI4O,EAAOknC,IAE7BqC,IACFrC,EAAQqC,OAASA,GAEZrC,CAXyB,CAclCrvD,WAAAA,CAAYmoB,GACV,IAAK7lB,KAAKskD,eACR,OAEF,MAAMroB,EAAMj8B,KAAKi8B,IAEjBj8B,KAAKzF,OACL,MAAMwyD,EAAU/sD,KAAKmvD,YAAYtpC,GACjCoW,EAAIqkB,UAAYyM,EAAQhF,WACtB9rB,EACAj8B,MACA,EAAAsH,EAAAsgD,4BAA2B3rB,GAC3Bqd,EAAAkE,SAAS8R,SAGX,MAAMC,GAAM,EAAAjoD,EAAAsgD,4BAA2B3rB,GACvC,GAAIszB,EAAK,CACP,MAAM,MAAEhrC,EAAF,OAASC,GAAWyX,EAAI5V,QACvBrhB,EAAIC,EAAIC,EAAIC,GAAMgC,EAAA3E,KAAKe,2BAC5B,CAAC,EAAG,EAAGghB,EAAOC,GACd+qC,GAGFvvD,KAAKi8B,IAAIkpB,SAASngD,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,EAPjC,MAePjF,KAAKi8B,IAAIkpB,UAAU,MAAO,KAAM,KAAM,MAGxCnlD,KAAKmqD,QAAQnqD,KAAKm5C,QAAQ2E,6BAC1B99C,KAAKxF,SAnCY,CAuCnBmD,gBAAAA,IACE,EAAAwJ,EAAAlc,aAAY,mCADK,CAInB2S,cAAAA,IACE,EAAAuJ,EAAAlc,aAAY,iCADG,CAIjBqT,qBAAAA,CAAsB8wD,EAAQI,GAC5B,GAAKxvD,KAAKskD,iBAGVtkD,KAAKzF,OACLyF,KAAKgkD,mBAAmB5zD,KAAK4P,KAAK+jD,eAE9B39D,MAAMC,QAAQ+oE,IAA6B,IAAlBA,EAAO/jE,QAClC2U,KAAKvF,aAAa20D,GAGpBpvD,KAAK+jD,eAAgB,EAAAz8C,EAAAkzC,qBAAoBx6C,KAAKi8B,KAE1CuzB,GAAM,CACR,MAAMjrC,EAAQirC,EAAK,GAAKA,EAAK,GACvBhrC,EAASgrC,EAAK,GAAKA,EAAK,GAC9BxvD,KAAKi8B,IAAI13B,KAAKirD,EAAK,GAAIA,EAAK,GAAIjrC,EAAOC,GACvCxkB,KAAKm5C,QAAQ+D,kBAAiB,EAAA51C,EAAAkzC,qBAAoBx6C,KAAKi8B,KAAMuzB,GAC7DxvD,KAAKtX,OACLsX,KAAKvE,SANG,CAbwB,CAuBpC8C,mBAAAA,GACOyB,KAAKskD,iBAGVtkD,KAAKxF,UACLwF,KAAK+jD,cAAgB/jD,KAAKgkD,mBAAmBsG,MALzB,CAQtB9rD,UAAAA,CAAWixD,GACT,IAAKzvD,KAAKskD,eACR,OAGFtkD,KAAKzF,OAGDyF,KAAKsoD,cACPtoD,KAAKwoD,eACLxoD,KAAKm5C,QAAQqD,YAAc,MAG7B,MAAMkT,EAAa1vD,KAAKi8B,IAcnBwzB,EAAME,WACT,EAAAxoD,EAAA+X,MAAK,sCAKHuwC,EAAMG,WACR,EAAAzoD,EAAA5d,MAAK,kCAGP,MAAMw9D,GAAmB,EAAAz/C,EAAAkzC,qBAAoBkV,GAI7C,GAHID,EAAML,QACRM,EAAWj1D,aAAag1D,EAAML,SAE3BK,EAAMD,KACT,MAAM,IAAIvlE,MAAM,6BAKlB,IAAIwb,EAAS0B,EAAA3E,KAAKe,2BAChBksD,EAAMD,MACN,EAAAloD,EAAAkzC,qBAAoBkV,IAGtB,MAAMG,EAAe,CACnB,EACA,EACAH,EAAWrpC,OAAO9B,MAClBmrC,EAAWrpC,OAAO7B,QAEpB/e,EAAS0B,EAAA3E,KAAKgC,UAAUiB,EAAQoqD,IAAiB,CAAC,EAAG,EAAG,EAAG,GAG3D,MAAM36C,EAAU7nB,KAAKC,MAAMmY,EAAO,IAC5B0P,EAAU9nB,KAAKC,MAAMmY,EAAO,IAClC,IAAI+hD,EAAan6D,KAAKsW,IAAItW,KAAKk1D,KAAK98C,EAAO,IAAMyP,EAAS,GACtDuyC,EAAcp6D,KAAKsW,IAAItW,KAAKk1D,KAAK98C,EAAO,IAAM0P,EAAS,GACvD26C,EAAS,EACXC,EAAS,EACPvI,EAAahO,IACfsW,EAAStI,EAAahO,EACtBgO,EAAahO,GAEXiO,EAAcjO,IAChBuW,EAAStI,EAAcjO,EACvBiO,EAAcjO,GAGhBx5C,KAAKm5C,QAAQuD,uBAAuB,CAAC,EAAG,EAAG8K,EAAYC,IAEvD,IAAIgB,EAAU,UAAYzoD,KAAKikD,WAC3BwL,EAAMhO,QAERgH,GAAW,UAAazoD,KAAKmkD,eAAiB,GAEhD,MAAMuE,EAAgB1oD,KAAKukD,eAAe3K,UACxC6O,EACAjB,EACAC,GAEIuI,EAAWtH,EAAcz+B,QAI/B+lC,EAASh7C,MAAM,EAAI86C,EAAQ,EAAIC,GAC/BC,EAASp/B,WAAW1b,GAAUC,GAC9B66C,EAASv1D,aAAassD,GAElB0I,EAAMhO,MAERzhD,KAAKkkD,WAAW9zD,KAAK,CACnBi2B,OAAQqiC,EAAcriC,OACtB4D,QAAS+lC,EACT96C,UACAC,UACA26C,SACAC,SACA51B,QAASs1B,EAAMhO,MAAMtnB,QACrB8nB,SAAUwN,EAAMhO,MAAMQ,SACtBX,YAAamO,EAAMhO,MAAMH,aAAe,KACxC2O,sBAAuB,QAKzBP,EAAWzU,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACvCyU,EAAW9+B,UAAU1b,EAASC,GAC9Bu6C,EAAW16C,MAAM86C,EAAQC,GACzBL,EAAWn1D,QAIbqlD,EAAa8P,EAAYM,GACzBhwD,KAAKi8B,IAAM+zB,EACXhwD,KAAK1F,UAAU,CACb,CAAC,KAAM,eACP,CAAC,KAAM,GACP,CAAC,KAAM,KAET0F,KAAK6jD,WAAWzzD,KAAKs/D,GACrB1vD,KAAKikD,YAhIW,CAmIlBxlD,QAAAA,CAASgxD,GACP,IAAKzvD,KAAKskD,eACR,OAEFtkD,KAAKikD,aACL,MAAM+L,EAAWhwD,KAAKi8B,IAChBA,EAAMj8B,KAAK6jD,WAAWyG,MAM5B,GALAtqD,KAAKi8B,IAAMA,EAGXj8B,KAAKi8B,IAAI4rB,uBAAwB,EAE7B4H,EAAMhO,MACRzhD,KAAKokD,UAAYpkD,KAAKkkD,WAAWoG,MACjCtqD,KAAKxF,cACA,CACLwF,KAAKi8B,IAAIzhC,UACT,MAAM01D,GAAa,EAAA5oD,EAAAkzC,qBAAoBx6C,KAAKi8B,KAC5Cj8B,KAAKxF,UACLwF,KAAKi8B,IAAI1hC,OACTyF,KAAKi8B,IAAIgf,gBAAgBiV,GACzB,MAAM9F,EAAWjjD,EAAA3E,KAAKe,2BACpB,CAAC,EAAG,EAAGysD,EAAS3pC,OAAO9B,MAAOyrC,EAAS3pC,OAAO7B,QAC9C0rC,GAEFlwD,KAAKi8B,IAAII,UAAU2zB,EAAS3pC,OAAQ,EAAG,GACvCrmB,KAAKi8B,IAAIzhC,UACTwF,KAAKmqD,QAAQC,EAZR,CAfO,CA+BhB1rD,eAAAA,CAAgBuT,EAAI1N,EAAM9J,EAAW20D,EAAQe,GAe3C,GAVAt5C,kBAAAusC,EAAApjD,KAAAgmD,GAAA3jD,KAAArC,MACAogD,EAAkBpgD,KAAKi8B,KAEvBj8B,KAAKi8B,IAAI1hC,OACTyF,KAAKzF,OAEDyF,KAAK+jD,eACP/jD,KAAKi8B,IAAIgf,gBAAgBj7C,KAAK+jD,eAG5B39D,MAAMC,QAAQke,IAAyB,IAAhBA,EAAKlZ,OAAc,CAC5C,MAAMk5B,EAAQhgB,EAAK,GAAKA,EAAK,GACvBigB,EAASjgB,EAAK,GAAKA,EAAK,GAE9B,GAAI4rD,GAAgBnwD,KAAKyW,oBAAqB,EAC5Chc,EAAYA,EAAU+I,SACZ,IAAMe,EAAK,GACrB9J,EAAU,IAAM8J,EAAK,IAErBA,EAAOA,EAAKf,SACP,GAAKe,EAAK,GAAK,EACpBA,EAAK,GAAKggB,EACVhgB,EAAK,GAAKigB,EAEV,MAAOsrC,EAAQC,GAAU5oD,EAAA3E,KAAKqB,+BAC5B,EAAAyD,EAAAkzC,qBAAoBx6C,KAAKi8B,OAErB,cAAEwoB,GAAkBzkD,KACpBowD,EAAc/iE,KAAKk1D,KACvBh+B,EAAQvkB,KAAK0kD,aAAeD,GAExB4L,EAAehjE,KAAKk1D,KACxB/9B,EAASxkB,KAAK2kD,aAAeF,GAG/BzkD,KAAKswD,iBAAmBtwD,KAAK6L,cAAc9c,OACzCqhE,EACAC,GAEF,MAAM,OAAEhqC,EAAF,QAAU4D,GAAYjqB,KAAKswD,iBACjCtwD,KAAKyW,oBAAoBQ,IAAIhF,EAAIoU,GACjCrmB,KAAKswD,iBAAiBC,SAAWvwD,KAAKi8B,IACtCj8B,KAAKi8B,IAAMhS,EACXjqB,KAAKi8B,IAAI1hC,OACTyF,KAAKi8B,IAAIgf,aAAa6U,EAAQ,EAAG,GAAIC,EAAQ,EAAGvrC,EAASurC,GAEzD3P,EAAkBpgD,KAAKi8B,IAhCqB,MAkC5CmkB,EAAkBpgD,KAAKi8B,KAEvBj8B,KAAKi8B,IAAI13B,KAAKA,EAAK,GAAIA,EAAK,GAAIggB,EAAOC,GACvCxkB,KAAKi8B,IAAIvzC,OACTsX,KAAKvE,SA1CqC,CA8C9CuE,KAAKm5C,QAAU,IAAIgC,EACjBn7C,KAAKi8B,IAAI5V,OAAO9B,MAChBvkB,KAAKi8B,IAAI5V,OAAO7B,QAGlBxkB,KAAKvF,aAAaA,GAClBuF,KAAKvF,aAAa20D,EAnEuC,CAsE3DzwD,aAAAA,GACMqB,KAAKswD,mBACPtwD,KAAKi8B,IAAIzhC,UACTqc,kBAAAusC,EAAApjD,KAAAkmD,GAAA7jD,KAAArC,MAEAA,KAAKi8B,IAAMj8B,KAAKswD,iBAAiBC,gBAC1BvwD,KAAKswD,iBAAiBC,gBACtBvwD,KAAKswD,iBAPA,CAWhB1xD,qBAAAA,CAAsBwnD,GACpB,IAAKpmD,KAAKskD,eACR,OAEF,MAAM4C,EAAQd,EAAIc,OAClBd,EAAMpmD,KAAK+kD,UAAUqB,EAAIv/C,KAAMu/C,IAC3Bc,MAAQA,EAEZ,MAAMjrB,EAAMj8B,KAAKi8B,IACXkxB,EAAQntD,KAAK8jD,gBAEnB,GAAIqJ,SACqB7hE,IAAnB6hE,EAAMqD,WACRrD,EAAMqD,SA75Ed,SAA2BxS,GACzB,MAAM,MAAEz5B,EAAF,OAASC,GAAWw5B,EAC1B,GAAIz5B,EA/OsB,KA+OSC,EA/OT,IAgPxB,OAAO,KAGT,MACMisC,EAAc,IAAIvjE,WAAW,CACjC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAG1CwjE,EAASnsC,EAAQ,EACvB,IACIn3B,EAAG6Y,EAAG0qD,EADNC,EAAS,IAAI1jE,WAAWwjE,GAAUlsC,EAAS,IAI/C,MAAMqsC,EAAYtsC,EAAQ,GAAK,EAC/B,IAAI1d,EAAO,IAAI3Z,WAAW2jE,EAAWrsC,GACnCssC,EAAM,EACR,IAAK,MAAMC,KAAQ/S,EAAQn3C,KAAM,CAC/B,IAAI04C,EAAO,IACX,KAAOA,EAAO,GACZ14C,EAAKiqD,KAASC,EAAOxR,EAAO,EAAI,IAChCA,IAAS,CAJoB,CAkBjC,IAAI2H,EAAQ,EAMZ,IALA4J,EAAM,EACY,IAAdjqD,EAAKiqD,KACPF,EAAO,GAAK,IACV1J,GAECjhD,EAAI,EAAGA,EAAIse,EAAOte,IACjBY,EAAKiqD,KAASjqD,EAAKiqD,EAAM,KAC3BF,EAAO3qD,GAAKY,EAAKiqD,GAAO,EAAI,IAC1B5J,GAEJ4J,IAMF,IAJkB,IAAdjqD,EAAKiqD,KACPF,EAAO3qD,GAAK,IACVihD,GAEC95D,EAAI,EAAGA,EAAIo3B,EAAQp3B,IAAK,CAC3B0jE,EAAM1jE,EAAIyjE,EACVF,EAAKvjE,EAAIsjE,EACL7pD,EAAKiqD,EAAMD,KAAchqD,EAAKiqD,KAChCF,EAAOD,GAAM9pD,EAAKiqD,GAAO,EAAI,IAC3B5J,GAIJ,IAAI8J,GAAOnqD,EAAKiqD,GAAO,EAAI,IAAMjqD,EAAKiqD,EAAMD,GAAY,EAAI,GAC5D,IAAK5qD,EAAI,EAAGA,EAAIse,EAAOte,IACrB+qD,GACGA,GAAO,IACPnqD,EAAKiqD,EAAM,GAAK,EAAI,IACpBjqD,EAAKiqD,EAAMD,EAAW,GAAK,EAAI,GAC9BJ,EAAYO,KACdJ,EAAOD,EAAK1qD,GAAKwqD,EAAYO,KAC3B9J,GAEJ4J,IAOF,GALIjqD,EAAKiqD,EAAMD,KAAchqD,EAAKiqD,KAChCF,EAAOD,EAAK1qD,GAAKY,EAAKiqD,GAAO,EAAI,IAC/B5J,GAGAA,EA1EyB,IA2E3B,OAAO,IA3BkB,CAqC7B,IANA4J,EAAMD,GAAYrsC,EAAS,GAC3BmsC,EAAKvjE,EAAIsjE,EACS,IAAd7pD,EAAKiqD,KACPF,EAAOD,GAAM,IACXzJ,GAECjhD,EAAI,EAAGA,EAAIse,EAAOte,IACjBY,EAAKiqD,KAASjqD,EAAKiqD,EAAM,KAC3BF,EAAOD,EAAK1qD,GAAKY,EAAKiqD,GAAO,EAAI,IAC/B5J,GAEJ4J,IAMF,GAJkB,IAAdjqD,EAAKiqD,KACPF,EAAOD,EAAK1qD,GAAK,IACfihD,GAEAA,EAhG2B,IAiG7B,OAAO,KAIT,MAAMvB,EAAQ,IAAIsL,WAAW,CAAC,EAAGP,GAAS,EAAG,GAAIA,EAAQ,EAAG,EAAG,EAAG,IAC5DvF,EAAO,IAAI+F,OAEjB,IAAK9jE,EAAI,EAAG85D,GAAS95D,GAAKo3B,EAAQp3B,IAAK,CACrC,IAAI+V,EAAI/V,EAAIsjE,EACZ,MAAM9/C,EAAMzN,EAAIohB,EAChB,KAAOphB,EAAIyN,IAAQggD,EAAOztD,IACxBA,IAEF,GAAIA,IAAMyN,EACR,SAEFu6C,EAAKzwD,OAAOyI,EAAIutD,EAAQtjE,GAExB,MAAM+jE,EAAKhuD,EACX,IAAIzc,EAAOkqE,EAAOztD,GAClB,EAAG,CACD,MAAM4rC,EAAO4W,EAAMj/D,GACnB,GACEyc,GAAK4rC,SACG6hB,EAAOztD,IAEjB,MAAMiuD,EAAKR,EAAOztD,GACP,IAAPiuD,GAAmB,KAAPA,GAEd1qE,EAAO0qE,EAEPR,EAAOztD,GAAK,IAIZzc,EAAO0qE,EAAO,GAAO1qE,GAAS,EAE9BkqE,EAAOztD,IAAOzc,GAAQ,EAAMA,GAAQ,GAEtCykE,EAAKxwD,OAAOwI,EAAIutD,EAASvtD,EAAIutD,EAAU,GAElCE,EAAOztD,MACR+jD,CAtBH,OAwBMiK,IAAOhuD,KACd/V,CAtCmC,CAuDvC,OAbAyZ,EAAO,KACP+pD,EAAS,KAEW,SAAU5sD,GAC5BA,EAAEzJ,OAEFyJ,EAAEgR,MAAM,EAAIuP,GAAQ,EAAIC,GACxBxgB,EAAE4sB,UAAU,GAAIpM,GAChBxgB,EAAE7I,KAAKgwD,GACPnnD,EAAE6lD,YACF7lD,EAAExJ,SAP6B,CA3JC,CA65EX62D,CAAkBjL,IAGjC+G,EAAMqD,UAER,YADArD,EAAMqD,SAASv0B,GAInB,MAAMsjB,EAAOv/C,KAAK6mD,kBAAkBT,GAC9Ba,EAAa1H,EAAKl5B,OAExB4V,EAAI1hC,OAGJ0hC,EAAIgf,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAChChf,EAAII,UAAU4qB,EAAY1H,EAAKrqC,QAASqqC,EAAKpqC,SAC7C8mB,EAAIzhC,UACJwF,KAAKmqD,SA9BoB,CAiC3BjrD,2BAAAA,CACEknD,EACA0J,GAKA,IAJAwB,EAAAlmE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAQ,EACRmmE,EAAAnmE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAQ,EACR2kE,EALF3kE,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAMEkmE,EANFpmE,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAQE,IAAK0U,KAAKskD,eACR,OAGF8B,EAAMpmD,KAAK+kD,UAAUqB,EAAIv/C,KAAMu/C,GAE/B,MAAMnqB,EAAMj8B,KAAKi8B,IACjBA,EAAI1hC,OACJ,MAAMwsD,GAAmB,EAAAz/C,EAAAkzC,qBAAoBve,GAC7CA,EAAIxhC,UAAUq1D,EAAQwB,EAAOC,EAAOxB,EAAQ,EAAG,GAC/C,MAAMxQ,EAAOv/C,KAAK6mD,kBAAkBT,GAEpCnqB,EAAIgf,aACF,EACA,EACA,EACA,EACAsE,EAAKrqC,QAAU6xC,EAAiB,GAChCxH,EAAKpqC,QAAU4xC,EAAiB,IAElC,IAAK,IAAI35D,EAAI,EAAGa,EAAKujE,EAAUnmE,OAAQ+B,EAAIa,EAAIb,GAAK,EAAG,CACrD,MAAMqkE,EAAQtqD,EAAA3E,KAAK/H,UAAUssD,EAAkB,CAC7C+I,EACAwB,EACAC,EACAxB,EACAyB,EAAUpkE,GACVokE,EAAUpkE,EAAI,MAGT8/B,EAAGC,GAAKhmB,EAAA3E,KAAKU,eAAe,CAAC,EAAG,GAAIuuD,GAC3Cx1B,EAAII,UAAUkjB,EAAKl5B,OAAQ6G,EAAGC,EAXuB,CAavD8O,EAAIzhC,UACJwF,KAAKmqD,SAnCL,CAsCFtrD,0BAAAA,CAA2B6yD,GACzB,IAAK1xD,KAAKskD,eACR,OAEF,MAAMroB,EAAMj8B,KAAKi8B,IAEXigB,EAAYl8C,KAAKm5C,QAAQ+C,UACzB4K,EAAgB9mD,KAAKm5C,QAAQiD,YAEnC,IAAK,MAAMjgB,KAASu1B,EAAQ,CAC1B,MAAM,KAAE7qD,EAAF,MAAQ0d,EAAR,OAAeC,EAAf,UAAuB/pB,GAAc0hC,EAErC8qB,EAAajnD,KAAKukD,eAAe3K,UACrC,aACAr1B,EACAC,GAEIw9B,EAAUiF,EAAWh9B,QAC3B+3B,EAAQznD,OAGRklD,EAAmBuC,EADPhiD,KAAK+kD,UAAUl+C,EAAMs1B,IAGjC6lB,EAAQpB,yBAA2B,YAEnCoB,EAAQ1B,UAAYwG,EAChB5K,EAAU6L,WACR/F,EACAhiD,MACA,EAAAsH,EAAAsgD,4BAA2B3rB,GAC3Bqd,EAAAkE,SAAShqD,MAEX0oD,EACJ8F,EAAQmD,SAAS,EAAG,EAAG5gC,EAAOC,GAE9Bw9B,EAAQxnD,UAERyhC,EAAI1hC,OACJ0hC,EAAIxhC,aAAaA,GACjBwhC,EAAIjnB,MAAM,GAAI,GACd8kC,EACE7d,EACAgrB,EAAW5gC,OACX,EACA,EACA9B,EACAC,EACA,GACC,EACD,EACA,GAEFyX,EAAIzhC,SA3CsB,CA6C5BwF,KAAKmqD,SAtD4B,CAyDnCrrD,iBAAAA,CAAkB+mB,GAChB,IAAK7lB,KAAKskD,eACR,OAEF,MAAMtG,EAAUh+C,KAAK+kD,UAAUl/B,GAC1Bm4B,EAKLh+C,KAAKjB,wBAAwBi/C,IAJ3B,EAAA72C,EAAA5d,MAAK,kCANgB,CAazB0V,uBAAAA,CAAwB4mB,EAAOiqC,EAAQC,EAAQyB,GAC7C,IAAKxxD,KAAKskD,eACR,OAEF,MAAMtG,EAAUh+C,KAAK+kD,UAAUl/B,GAC/B,IAAKm4B,EAEH,YADA,EAAA72C,EAAA5d,MAAK,mCAIP,MAAMg7B,EAAQy5B,EAAQz5B,MAChBC,EAASw5B,EAAQx5B,OACjB51B,EAAM,GACZ,IAAK,IAAIxB,EAAI,EAAGa,EAAKujE,EAAUnmE,OAAQ+B,EAAIa,EAAIb,GAAK,EAClDwB,EAAIwB,KAAK,CACPqK,UAAW,CAACq1D,EAAQ,EAAG,EAAGC,EAAQyB,EAAUpkE,GAAIokE,EAAUpkE,EAAI,IAC9D8/B,EAAG,EACHC,EAAG,EACH2L,EAAGvU,EACHwU,EAAGvU,IAGPxkB,KAAKhB,6BAA6Bg/C,EAASpvD,EAtBa,CAyB1D+iE,yBAAAA,CAA0B11B,GAMxB,MALkC,SAA9Bj8B,KAAKm5C,QAAQsD,eACfxgB,EAAIqR,OAASttC,KAAKm5C,QAAQsD,aAC1BxgB,EAAII,UAAUJ,EAAI5V,OAAQ,EAAG,GAC7B4V,EAAIqR,OAAS,QAERrR,EAAI5V,MANkB,CAS/BurC,yBAAAA,CAA0B5T,GACxB,GAAkC,SAA9Bh+C,KAAKm5C,QAAQsD,aACf,OAAOuB,EAAQ15B,OAEjB,MAAM,OAAEA,EAAF,MAAUC,EAAV,OAAiBC,GAAWw5B,EAC5BqI,EAAYrmD,KAAKukD,eAAe3K,UACpC,cACAr1B,EACAC,GAEI8hC,EAASD,EAAUp8B,QAKzB,OAJAq8B,EAAOhZ,OAASttC,KAAKm5C,QAAQsD,aAC7B6J,EAAOjqB,UAAU/X,EAAQ,EAAG,GAC5BgiC,EAAOhZ,OAAS,OAET+Y,EAAUhgC,MAfgB,CAkBnCtnB,uBAAAA,CAAwBi/C,GACtB,IAAKh+C,KAAKskD,eACR,OAEF,MAAM//B,EAAQy5B,EAAQz5B,MAChBC,EAASw5B,EAAQx5B,OACjByX,EAAMj8B,KAAKi8B,IAIjB,GAFAj8B,KAAKzF,QAIF4M,EAAA5W,SACD,CAKA,MAAM,OAAE+8C,GAAWrR,EACJ,SAAXqR,GAAgC,KAAXA,IACvBrR,EAAIqR,OAAS,OAPf,CAcF,IAAIukB,EACJ,GAHA51B,EAAIjnB,MAAM,EAAIuP,GAAQ,EAAIC,GAGtBw5B,EAAQ15B,OACVutC,EAAa7xD,KAAK4xD,0BAA0B5T,QACvC,GACmB,oBAAhB8T,aAA8B9T,aAAmB8T,cACxD9T,EAAQn3C,KAGTgrD,EAAa7T,MACR,CACL,MAKMsI,EALYtmD,KAAKukD,eAAe3K,UACpC,cACAr1B,EACAC,GAEuByF,QACzB8zB,EAAmBuI,EAAQtI,GAC3B6T,EAAa7xD,KAAK2xD,0BAA0BrL,EARvC,CAWP,MAAMU,EAAShnD,KAAKmmD,YAClB0L,GACA,EAAAvqD,EAAAsgD,4BAA2B3rB,IAE7BA,EAAI4rB,sBAAwBlF,GAC1B,EAAAr7C,EAAAkzC,qBAAoBve,GACpB+hB,EAAQ4E,aAGV9I,EACE7d,EACA+qB,EAAOZ,IACP,EACA,EACAY,EAAOP,WACPO,EAAON,YACP,GACCliC,EACDD,EACAC,GAEFxkB,KAAKmqD,UACLnqD,KAAKxF,SArE0B,CAwEjCwE,4BAAAA,CAA6Bg/C,EAASpvD,GACpC,IAAKoR,KAAKskD,eACR,OAEF,MAAMroB,EAAMj8B,KAAKi8B,IACjB,IAAI41B,EACJ,GAAI7T,EAAQ15B,OACVutC,EAAa7T,EAAQ15B,WAChB,CACL,MAAMwU,EAAIklB,EAAQz5B,MACZwU,EAAIilB,EAAQx5B,OAGZ8hC,EADYtmD,KAAKukD,eAAe3K,UAAU,cAAe9gB,EAAGC,GACzC9O,QACzB8zB,EAAmBuI,EAAQtI,GAC3B6T,EAAa7xD,KAAK2xD,0BAA0BrL,EAPvC,CAUP,IAAK,MAAM98B,KAAS56B,EAClBqtC,EAAI1hC,OACJ0hC,EAAIxhC,aAAa+uB,EAAM/uB,WACvBwhC,EAAIjnB,MAAM,GAAI,GACd8kC,EACE7d,EACA41B,EACAroC,EAAM0D,EACN1D,EAAM2D,EACN3D,EAAMsP,EACNtP,EAAMuP,EACN,GACC,EACD,EACA,GAEFkD,EAAIzhC,UAENwF,KAAKmqD,SApCoC,CAuC3ChrD,wBAAAA,GACOa,KAAKskD,iBAGVtkD,KAAKi8B,IAAIkpB,SAAS,EAAG,EAAG,EAAG,GAC3BnlD,KAAKmqD,UALoB,CAU3BpsD,SAAAA,CAAUg0D,GAAM,CAIhB/zD,cAAAA,CAAe+zD,EAAKhS,GAAa,CAIjC9hD,kBAAAA,CAAmB8zD,GACjB/xD,KAAKujD,mBAAmBnzD,KAAK,CAC3B4hE,SAAS,GAFW,CAMxB9zD,uBAAAA,CAAwB6zD,EAAKhS,GACf,OAARgS,EACF/xD,KAAKujD,mBAAmBnzD,KAAK,CAC3B4hE,QAAShyD,KAAKgZ,sBAAsBi5C,UAAUlS,KAGhD//C,KAAKujD,mBAAmBnzD,KAAK,CAC3B4hE,SAAS,IAGbhyD,KAAKskD,eAAiBtkD,KAAKkyD,kBAVY,CAazC/zD,gBAAAA,GACE6B,KAAKujD,mBAAmB+G,MACxBtqD,KAAKskD,eAAiBtkD,KAAKkyD,kBAFV,CAOnB9zD,WAAAA,GAAe,CAIfC,SAAAA,GAAa,CAMbysD,WAAAA,CAAYnO,GACV,MAAMrsB,EAAUtwB,KAAKm5C,QAAQyE,cACzB59C,KAAKyjD,aACPzjD,KAAKm5C,QAAQwE,qBAEV39C,KAAKyjD,aACRzjD,KAAKmqD,QAAQxN,GAEf,MAAM1gB,EAAMj8B,KAAKi8B,IACbj8B,KAAKyjD,cACFnzB,IACCtwB,KAAKyjD,cAAgBN,EACvBlnB,EAAIvzC,KAAK,WAETuzC,EAAIvzC,QAGRsX,KAAKyjD,YAAc,MAErBzjD,KAAKm5C,QAAQuD,uBAAuB18C,KAAKm5C,QAAQwD,SACjD1gB,EAAI4tB,WApBe,CAuBrBmD,mBAAAA,GACE,IAAKhtD,KAAK6kD,2BAA4B,CACpC,MAAMzhD,GAAI,EAAAkE,EAAAkzC,qBAAoBx6C,KAAKi8B,KACnC,GAAa,IAAT74B,EAAE,IAAqB,IAATA,EAAE,GAElBpD,KAAK6kD,2BACH,EAAIx3D,KAAKkT,IAAIlT,KAAK0Y,IAAI3C,EAAE,IAAK/V,KAAK0Y,IAAI3C,EAAE,SACrC,CACL,MAAM+uD,EAAS9kE,KAAK0Y,IAAI3C,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACzCgvD,EAAQ/kE,KAAKwsC,MAAMz2B,EAAE,GAAIA,EAAE,IAC3BivD,EAAQhlE,KAAKwsC,MAAMz2B,EAAE,GAAIA,EAAE,IACjCpD,KAAK6kD,2BAA6Bx3D,KAAKsW,IAAIyuD,EAAOC,GAASF,CAJtD,CAN6B,CAatC,OAAOnyD,KAAK6kD,0BAdQ,CAiBtByN,mBAAAA,GAOE,IAAyC,IAArCtyD,KAAK4kD,wBAAwB,GAAW,CAC1C,MAAM,UAAErI,GAAcv8C,KAAKm5C,SACrB,EAAEp1C,EAAF,EAAKnB,EAAL,EAAQoB,EAAR,EAAWV,GAAMtD,KAAKi8B,IAAIiO,eAChC,IAAI4lB,EAAQC,EAEZ,GAAU,IAANntD,GAAiB,IAANoB,EAAS,CAEtB,MAAMouD,EAAQ/kE,KAAK0Y,IAAIhC,GACjBsuD,EAAQhlE,KAAK0Y,IAAIzC,GACvB,GAAI8uD,IAAUC,EACZ,GAAkB,IAAd9V,EACFuT,EAASC,EAAS,EAAIqC,MACjB,CACL,MAAMG,EAAkBH,EAAQ7V,EAChCuT,EAASC,EAASwC,EAAkB,EAAI,EAAIA,EAAkB,CAFzD,MAIF,GAAkB,IAAdhW,EACTuT,EAAS,EAAIsC,EACbrC,EAAS,EAAIsC,MACR,CACL,MAAMG,EAAmBJ,EAAQ7V,EAC3BkW,EAAmBJ,EAAQ9V,EACjCuT,EAAS0C,EAAmB,EAAI,EAAIA,EAAmB,EACvDzC,EAAS0C,EAAmB,EAAI,EAAIA,EAAmB,CAJlD,CAde,KAoBjB,CAOL,MAAMN,EAAS9kE,KAAK0Y,IAAIhC,EAAIT,EAAIV,EAAIoB,GAC9BouD,EAAQ/kE,KAAKwsC,MAAM91B,EAAGnB,GACtByvD,EAAQhlE,KAAKwsC,MAAM71B,EAAGV,GAC5B,GAAkB,IAAdi5C,EACFuT,EAASuC,EAAQF,EACjBpC,EAASqC,EAAQD,MACZ,CACL,MAAMO,EAAWnW,EAAY4V,EAC7BrC,EAASuC,EAAQK,EAAWL,EAAQK,EAAW,EAC/C3C,EAASqC,EAAQM,EAAWN,EAAQM,EAAW,CAH1C,CAbF,CAmBP1yD,KAAK4kD,wBAAwB,GAAKkL,EAClC9vD,KAAK4kD,wBAAwB,GAAKmL,CA7CQ,CA+C5C,OAAO/vD,KAAK4kD,uBAtDQ,CA2DtBmG,gBAAAA,CAAiB4H,GACf,MAAM,IAAE12B,GAAQj8B,MACV,UAAEu8C,GAAcv8C,KAAKm5C,SACpB2W,EAAQC,GAAU/vD,KAAKsyD,sBAI9B,GAFAr2B,EAAIsgB,UAAYA,GAAa,EAEd,IAAXuT,GAA2B,IAAXC,EAElB,YADA9zB,EAAIhhC,SAIN,MAAM23D,EAAS32B,EAAIikB,cAcnB,GAbIyS,GACF12B,EAAI1hC,OAGN0hC,EAAIjnB,MAAM86C,EAAQC,GASd6C,EAAOvnE,OAAS,EAAG,CACrB,MAAM2pB,EAAQ3nB,KAAKsW,IAAImsD,EAAQC,GAC/B9zB,EAAIgkB,YAAY2S,EAAOhkE,KAAIs+B,GAAKA,EAAIlY,KACpCinB,EAAIkkB,gBAAkBnrC,CAHD,CAMvBinB,EAAIhhC,SAEA03D,GACF12B,EAAIzhC,SAnCsB,CAuC9B03D,gBAAAA,GACE,IAAK,IAAI9kE,EAAI4S,KAAKujD,mBAAmBl4D,OAAS,EAAG+B,GAAK,EAAGA,IACvD,IAAK4S,KAAKujD,mBAAmBn2D,GAAG4kE,QAC9B,OAAO,EAGX,OAAO,CANU,EAhwEA,SAAAhM,IAsLjB,KAAOhmD,KAAKwjD,WAAWn4D,QAAU2U,KAAKsoD,aACpCtoD,KAAKxF,UAGPwF,KAAKi8B,IAAIzhC,UAELwF,KAAKolD,oBACPplD,KAAKi8B,IAAMj8B,KAAKqlD,aAChBrlD,KAAKi8B,IAAI1hC,OACTyF,KAAKi8B,IAAIgf,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACrCj7C,KAAKi8B,IAAII,UAAUr8B,KAAKolD,kBAAmB,EAAG,GAC9CplD,KAAKi8B,IAAIzhC,UACTwF,KAAKolD,kBAAoB,KAdN,UAAAc,IAwCrB,GAAIlmD,KAAK0W,WAAY,CACnB,MAAMm8C,EAAc7yD,KAAK8L,cAAcm5B,aACrCjlC,KAAK0W,WAAWwuB,WAChBllC,KAAK0W,WAAWH,YAElB,GAAoB,SAAhBs8C,EAAwB,CAC1B,MAAMC,EAAc9yD,KAAKi8B,IAAIqR,OAC7BttC,KAAKi8B,IAAIqR,OAASulB,EAClB7yD,KAAKi8B,IAAII,UAAUr8B,KAAKi8B,IAAI5V,OAAQ,EAAG,GACvCrmB,KAAKi8B,IAAIqR,OAASwlB,CAJQ,CALT,CADT,CAvoChB9sE,EAAA8hC,eAAAA,EAsrGA,IAAK,MAAMirC,KAAM5rD,EAAAtN,SACsBvO,IAAjCw8B,EAAe5nB,UAAU6yD,KAC3BjrC,EAAe5nB,UAAUiH,EAAAtN,IAAIk5D,IAAOjrC,EAAe5nB,UAAU6yD,sHCtwFjE,SAA2BhE,GACzB,OAAQA,EAAG,IACT,IAAK,cACH,OAAO,IAAIiE,EAA0BjE,GACvC,IAAK,OACH,OAAO,IAAIkE,EAAmBlE,GAChC,IAAK,QACH,OAAO,IAAImE,EAEf,MAAM,IAAIjpE,MAAJ,oBAAA0B,OAA8BojE,EAAG,IATV,EAna/B,IAAA5nD,EAAAC,EAAA,GACAE,EAAAF,EAAA,GAEA,MAAMo2C,EAAW,CACfhqD,KAAM,OACNC,OAAQ,SACR67D,QAAS,WAGX,SAAS6D,EAAiBl3B,EAAKuzB,GAC7B,IAAKA,EACH,OAEF,MAAMjrC,EAAQirC,EAAK,GAAKA,EAAK,GACvBhrC,EAASgrC,EAAK,GAAKA,EAAK,GACxB4D,EAAS,IAAIlC,OACnBkC,EAAO7uD,KAAKirD,EAAK,GAAIA,EAAK,GAAIjrC,EAAOC,GACrCyX,EAAIvzC,KAAK0qE,EAR0B,CAxBrCptE,EAAAw3D,SAAAA,EAmCA,MAAM6V,EACJpzD,WAAAA,GACMD,KAAKC,cAAgBozD,IACvB,EAAAlsD,EAAAlc,aAAY,wCAFF,CAMd88D,UAAAA,IACE,EAAA5gD,EAAAlc,aAAY,uCADD,EAKf,MAAM+nE,UAAkCK,EACtCpzD,WAAAA,CAAY8uD,GACVpuD,QACAX,KAAK2pB,MAAQolC,EAAG,GAChB/uD,KAAKszD,MAAQvE,EAAG,GAChB/uD,KAAKuzD,YAAcxE,EAAG,GACtB/uD,KAAKwzD,IAAMzE,EAAG,GACd/uD,KAAKyzD,IAAM1E,EAAG,GACd/uD,KAAK0zD,IAAM3E,EAAG,GACd/uD,KAAK2zD,IAAM5E,EAAG,GACd/uD,KAAKovD,OAAS,IATA,CAYhBwE,eAAAA,CAAgB33B,GACd,IAAI43B,EACe,UAAf7zD,KAAK2pB,MACPkqC,EAAO53B,EAAI63B,qBACT9zD,KAAKwzD,IAAI,GACTxzD,KAAKwzD,IAAI,GACTxzD,KAAKyzD,IAAI,GACTzzD,KAAKyzD,IAAI,IAEa,WAAfzzD,KAAK2pB,QACdkqC,EAAO53B,EAAI83B,qBACT/zD,KAAKwzD,IAAI,GACTxzD,KAAKwzD,IAAI,GACTxzD,KAAK0zD,IACL1zD,KAAKyzD,IAAI,GACTzzD,KAAKyzD,IAAI,GACTzzD,KAAK2zD,MAIT,IAAK,MAAMK,KAAah0D,KAAKuzD,YAC3BM,EAAKI,aAAaD,EAAU,GAAIA,EAAU,IAE5C,OAAOH,CAvBY,CA0BrB9L,UAAAA,CAAW9rB,EAAKi4B,EAAOpM,EAASvK,GAC9B,IAAIwP,EACJ,GAAIxP,IAAaC,EAAS/pD,QAAU8pD,IAAaC,EAAShqD,KAAM,CAC9D,MAAM2gE,EAAYD,EAAM/a,QAAQ2E,0BAC9BP,GACA,EAAAj2C,EAAAkzC,qBAAoBve,KACjB,CAAC,EAAG,EAAG,EAAG,GAIT1X,EAAQl3B,KAAKk1D,KAAK4R,EAAU,GAAKA,EAAU,KAAO,EAClD3vC,EAASn3B,KAAKk1D,KAAK4R,EAAU,GAAKA,EAAU,KAAO,EAEnD9N,EAAY6N,EAAM3P,eAAe3K,UACrC,UACAr1B,EACAC,GACA,GAGI8hC,EAASD,EAAUp8B,QACzBq8B,EAAOM,UAAU,EAAG,EAAGN,EAAOjgC,OAAO9B,MAAO+hC,EAAOjgC,OAAO7B,QAC1D8hC,EAAOuD,YACPvD,EAAO/hD,KAAK,EAAG,EAAG+hD,EAAOjgC,OAAO9B,MAAO+hC,EAAOjgC,OAAO7B,QAIrD8hC,EAAO11B,WAAWujC,EAAU,IAAKA,EAAU,IAC3CrM,EAAU3gD,EAAA3E,KAAK/H,UAAUqtD,EAAS,CAChC,EACA,EACA,EACA,EACAqM,EAAU,GACVA,EAAU,KAGZ7N,EAAO7rD,aAAay5D,EAAMnQ,eACtB/jD,KAAKovD,QACP9I,EAAO7rD,aAAauF,KAAKovD,QAE3B+D,EAAiB7M,EAAQtmD,KAAKszD,OAE9BhN,EAAOhG,UAAYtgD,KAAK4zD,gBAAgBtN,GACxCA,EAAOnrD,OAEP4xD,EAAU9wB,EAAIm4B,cAAc/N,EAAUhgC,OAAQ,aAC9C,MAAMguC,EAAY,IAAIC,UAAUxM,GAChCiF,EAAQ9R,aAAaoZ,EA9CyC,MAmD9DlB,EAAiBl3B,EAAKj8B,KAAKszD,OAC3BvG,EAAU/sD,KAAK4zD,gBAAgB33B,GAEjC,OAAO8wB,CAxDiC,EA4D5C,SAASwH,EAAa1tD,EAAMojB,EAASz7B,EAAIC,EAAIgV,EAAI+wD,EAAIC,EAAIC,GAEvD,MAAMC,EAAS1qC,EAAQ0qC,OACrB10B,EAAShW,EAAQgW,OACb9/B,EAAQ0G,EAAKA,KACjB+tD,EAAuB,EAAb/tD,EAAK0d,MACjB,IAAIswC,EACAF,EAAOnmE,EAAK,GAAKmmE,EAAOlmE,EAAK,KAC/BomE,EAAMrmE,EACNA,EAAKC,EACLA,EAAKomE,EACLA,EAAML,EACNA,EAAKC,EACLA,EAAKI,GAEHF,EAAOlmE,EAAK,GAAKkmE,EAAOlxD,EAAK,KAC/BoxD,EAAMpmE,EACNA,EAAKgV,EACLA,EAAKoxD,EACLA,EAAMJ,EACNA,EAAKC,EACLA,EAAKG,GAEHF,EAAOnmE,EAAK,GAAKmmE,EAAOlmE,EAAK,KAC/BomE,EAAMrmE,EACNA,EAAKC,EACLA,EAAKomE,EACLA,EAAML,EACNA,EAAKC,EACLA,EAAKI,GAEP,MAAM3vD,GAAMyvD,EAAOnmE,GAAMy7B,EAAQ/U,SAAW+U,EAAQ6lC,OAC9C3qD,GAAMwvD,EAAOnmE,EAAK,GAAKy7B,EAAQ9U,SAAW8U,EAAQ8lC,OAClD3qD,GAAMuvD,EAAOlmE,GAAMw7B,EAAQ/U,SAAW+U,EAAQ6lC,OAC9CzqD,GAAMsvD,EAAOlmE,EAAK,GAAKw7B,EAAQ9U,SAAW8U,EAAQ8lC,OAClDzqD,GAAMqvD,EAAOlxD,GAAMwmB,EAAQ/U,SAAW+U,EAAQ6lC,OAC9CvqD,GAAMovD,EAAOlxD,EAAK,GAAKwmB,EAAQ9U,SAAW8U,EAAQ8lC,OACxD,GAAI5qD,GAAMI,EACR,OAEF,MAAMuvD,EAAM70B,EAAOu0B,GACjBO,EAAM90B,EAAOu0B,EAAK,GAClBQ,EAAM/0B,EAAOu0B,EAAK,GACdS,EAAMh1B,EAAOw0B,GACjBS,EAAMj1B,EAAOw0B,EAAK,GAClBU,EAAMl1B,EAAOw0B,EAAK,GACdW,EAAMn1B,EAAOy0B,GACjBW,EAAMp1B,EAAOy0B,EAAK,GAClBY,EAAMr1B,EAAOy0B,EAAK,GAEd3X,EAAO1vD,KAAK6kC,MAAM/sB,GACtB83C,EAAO5vD,KAAK6kC,MAAM3sB,GACpB,IAAIgwD,EAAIC,EAAKC,EAAKC,EACdC,EAAIC,EAAKC,EAAKC,EAClB,IAAK,IAAI3oC,EAAI4vB,EAAM5vB,GAAK8vB,EAAM9vB,IAAK,CACjC,GAAIA,EAAI9nB,EAAI,CACV,MAAM8pC,EAAIhiB,EAAIhoB,EAAK,GAAKA,EAAKgoB,IAAMhoB,EAAKE,GACxCkwD,EAAKrwD,GAAMA,EAAKE,GAAM+pC,EACtBqmB,EAAMV,GAAOA,EAAMG,GAAO9lB,EAC1BsmB,EAAMV,GAAOA,EAAMG,GAAO/lB,EAC1BumB,EAAMV,GAAOA,EAAMG,GAAOhmB,CALhB,KAML,CACL,IAAIA,EAEFA,EADEhiB,EAAI5nB,EACF,EACKF,IAAOE,EACZ,GAECF,EAAK8nB,IAAM9nB,EAAKE,GAEvBgwD,EAAKnwD,GAAMA,EAAKE,GAAM6pC,EACtBqmB,EAAMP,GAAOA,EAAMG,GAAOjmB,EAC1BsmB,EAAMP,GAAOA,EAAMG,GAAOlmB,EAC1BumB,EAAMP,GAAOA,EAAMG,GAAOnmB,CAZrB,CAeP,IAAIA,EAEFA,EADEhiB,EAAIhoB,EACF,EACKgoB,EAAI5nB,EACT,GAECJ,EAAKgoB,IAAMhoB,EAAKI,GAEvBowD,EAAKzwD,GAAMA,EAAKI,GAAM6pC,EACtBymB,EAAMd,GAAOA,EAAMM,GAAOjmB,EAC1B0mB,EAAMd,GAAOA,EAAMM,GAAOlmB,EAC1B2mB,EAAMd,GAAOA,EAAMM,GAAOnmB,EAC1B,MAAM4mB,EAAM1oE,KAAK6kC,MAAM7kC,KAAKkT,IAAIg1D,EAAII,IAC9BK,EAAM3oE,KAAK6kC,MAAM7kC,KAAKsW,IAAI4xD,EAAII,IACpC,IAAI1vD,EAAI2uD,EAAUznC,EAAU,EAAN4oC,EACtB,IAAK,IAAI7oC,EAAI6oC,EAAK7oC,GAAK8oC,EAAK9oC,IAC1BiiB,GAAKomB,EAAKroC,IAAMqoC,EAAKI,GACjBxmB,EAAI,EACNA,EAAI,EACKA,EAAI,IACbA,EAAI,GAENhvC,EAAM8F,KAAQuvD,GAAOA,EAAMI,GAAOzmB,EAAK,EACvChvC,EAAM8F,KAAQwvD,GAAOA,EAAMI,GAAO1mB,EAAK,EACvChvC,EAAM8F,KAAQyvD,GAAOA,EAAMI,GAAO3mB,EAAK,EACvChvC,EAAM8F,KAAO,GA/CkB,CAtDwB,CA0G7D,SAASgwD,EAAWpvD,EAAMqvD,EAAQjsC,GAChC,MAAMksC,EAAKD,EAAOvB,OACZyB,EAAKF,EAAOj2B,OAClB,IAAI7yC,EAAGa,EACP,OAAQioE,EAAOxvE,MACb,IAAK,UACH,MAAM2vE,EAAiBH,EAAOG,eACxBC,EAAOjpE,KAAKC,MAAM6oE,EAAG9qE,OAASgrE,GAAkB,EAChDE,EAAOF,EAAiB,EAC9B,IAAKjpE,EAAI,EAAGA,EAAIkpE,EAAMlpE,IAAK,CACzB,IAAIopE,EAAIppE,EAAIipE,EACZ,IAAK,IAAIpwD,EAAI,EAAGA,EAAIswD,EAAMtwD,IAAKuwD,IAC7BjC,EACE1tD,EACAojB,EACAksC,EAAGK,GACHL,EAAGK,EAAI,GACPL,EAAGK,EAAIH,GACPD,EAAGI,GACHJ,EAAGI,EAAI,GACPJ,EAAGI,EAAIH,IAET9B,EACE1tD,EACAojB,EACAksC,EAAGK,EAAIH,EAAiB,GACxBF,EAAGK,EAAI,GACPL,EAAGK,EAAIH,GACPD,EAAGI,EAAIH,EAAiB,GACxBD,EAAGI,EAAI,GACPJ,EAAGI,EAAIH,GArBc,CAyB3B,MACF,IAAK,YACH,IAAKjpE,EAAI,EAAGa,EAAKkoE,EAAG9qE,OAAQ+B,EAAIa,EAAIb,GAAK,EACvCmnE,EACE1tD,EACAojB,EACAksC,EAAG/oE,GACH+oE,EAAG/oE,EAAI,GACP+oE,EAAG/oE,EAAI,GACPgpE,EAAGhpE,GACHgpE,EAAGhpE,EAAI,GACPgpE,EAAGhpE,EAAI,IAGX,MACF,QACE,MAAM,IAAInD,MAAM,kBAlDqB,CAsD3C,MAAMgpE,UAA2BI,EAC/BpzD,WAAAA,CAAY8uD,GACVpuD,QACAX,KAAKy2D,QAAU1H,EAAG,GAClB/uD,KAAKggC,QAAU+uB,EAAG,GAClB/uD,KAAK02D,SAAW3H,EAAG,GACnB/uD,KAAK22D,QAAU5H,EAAG,GAClB/uD,KAAKszD,MAAQvE,EAAG,GAChB/uD,KAAK42D,YAAc7H,EAAG,GACtB/uD,KAAKovD,OAAS,IARA,CAWhByH,iBAAAA,CAAkBC,EAAeC,EAAiBxS,GAGhD,MAOMrvC,EAAU7nB,KAAKC,MAAM0S,KAAK22D,QAAQ,IAClCxhD,EAAU9nB,KAAKC,MAAM0S,KAAK22D,QAAQ,IAClCK,EAAc3pE,KAAKk1D,KAAKviD,KAAK22D,QAAQ,IAAMzhD,EAC3C+hD,EAAe5pE,KAAKk1D,KAAKviD,KAAK22D,QAAQ,IAAMxhD,EAE5CoP,EAAQl3B,KAAKkT,IACjBlT,KAAKk1D,KAAKl1D,KAAK0Y,IAAIixD,EAAcF,EAAc,GAb1B,MAEE,KAcnBtyC,EAASn3B,KAAKkT,IAClBlT,KAAKk1D,KAAKl1D,KAAK0Y,IAAIkxD,EAAeH,EAAc,GAjB3B,MAEE,KAkBnBhH,EAASkH,EAAczyC,EACvBwrC,EAASkH,EAAezyC,EAExByF,EAAU,CACd0qC,OAAQ30D,KAAKy2D,QACbx2B,OAAQjgC,KAAKggC,QACb9qB,SAAUA,EACVC,SAAUA,EACV26C,OAAQ,EAAIA,EACZC,OAAQ,EAAIA,GAGRmH,EAAc3yC,EAAQ4yC,EACtBC,EAAe5yC,EAAS2yC,EAExB9Q,EAAY9B,EAAe3K,UAC/B,OACAsd,EACAE,GACA,GAEI9Q,EAASD,EAAUp8B,QAEnBpjB,EAAOy/C,EAAO/H,gBAAgBh6B,EAAOC,GAC3C,GAAIuyC,EAAiB,CACnB,MAAM52D,EAAQ0G,EAAKA,KACnB,IAAK,IAAIzZ,EAAI,EAAGa,EAAKkS,EAAM9U,OAAQ+B,EAAIa,EAAIb,GAAK,EAC9C+S,EAAM/S,GAAK2pE,EAAgB,GAC3B52D,EAAM/S,EAAI,GAAK2pE,EAAgB,GAC/B52D,EAAM/S,EAAI,GAAK2pE,EAAgB,GAC/B52D,EAAM/S,EAAI,GAAK,GANE,CASrB,IAAK,MAAM8oE,KAAUl2D,KAAK02D,SACxBT,EAAWpvD,EAAMqvD,EAAQjsC,GAK3B,OAHAq8B,EAAOpI,aAAar3C,EAnDA,KAsDb,CACLwf,OAHaggC,EAAUhgC,OAIvBnR,QAASA,EAxDS,EAwDe46C,EACjC36C,QAASA,EAzDS,EAyDe46C,EACjCD,SACAC,SAnE8D,CAuElEhI,UAAAA,CAAW9rB,EAAKi4B,EAAOpM,EAASvK,GAE9B,IAAIvoC,EACJ,GAFAm+C,EAAiBl3B,EAAKj8B,KAAKszD,OAEvB/V,IAAaC,EAAS8R,QACxBt6C,EAAQ7N,EAAA3E,KAAKqB,+BAA8B,EAAAyD,EAAAkzC,qBAAoBve,SAI/D,GADAjnB,EAAQ7N,EAAA3E,KAAKqB,8BAA8BqwD,EAAMnQ,eAC7C/jD,KAAKovD,OAAQ,CACf,MAAMiI,EAAclwD,EAAA3E,KAAKqB,8BAA8B7D,KAAKovD,QAC5Dp6C,EAAQ,CAACA,EAAM,GAAKqiD,EAAY,GAAIriD,EAAM,GAAKqiD,EAAY,GAF5C,CAQnB,MAAMC,EAAyBt3D,KAAK62D,kBAClC7hD,EACAuoC,IAAaC,EAAS8R,QAAU,KAAOtvD,KAAK42D,YAC5C1C,EAAM3P,gBAgBR,OAbIhH,IAAaC,EAAS8R,UACxBrzB,EAAIgf,gBAAgBiZ,EAAMnQ,eACtB/jD,KAAKovD,QACPnzB,EAAIxhC,aAAauF,KAAKovD,SAI1BnzB,EAAIrL,UACF0mC,EAAuBpiD,QACvBoiD,EAAuBniD,SAEzB8mB,EAAIjnB,MAAMsiD,EAAuBxH,OAAQwH,EAAuBvH,QAEzD9zB,EAAIm4B,cAAckD,EAAuBjxC,OAAQ,YAnChB,EAuC5C,MAAM6sC,UAA4BG,EAChCtL,UAAAA,GACE,MAAO,SADI,EAiBf,MAAMwP,EACK,EADLA,EAEO,EAGb,MAAMrI,EAIJjvD,WAAAA,CAAY8uD,EAAI3uB,EAAOnE,EAAK+yB,EAAuBjL,GACjD/jD,KAAKuX,aAAew3C,EAAG,GACvB/uD,KAAKovD,OAASL,EAAG,IAAM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACvC/uD,KAAKwvD,KAAOT,EAAG,GACf/uD,KAAKw3D,MAAQzI,EAAG,GAChB/uD,KAAKy3D,MAAQ1I,EAAG,GAChB/uD,KAAK03D,UAAY3I,EAAG,GACpB/uD,KAAK23D,WAAa5I,EAAG,GACrB/uD,KAAKogC,MAAQA,EACbpgC,KAAKi8B,IAAMA,EACXj8B,KAAKgvD,sBAAwBA,EAC7BhvD,KAAK+jD,cAAgBA,CAX2C,CAclE6T,mBAAAA,CAAoB1D,GAClB,MAAM38C,EAAevX,KAAKuX,aACpBi4C,EAAOxvD,KAAKwvD,KACZgI,EAAQx3D,KAAKw3D,MACbC,EAAQz3D,KAAKy3D,MACbC,EAAY13D,KAAK03D,UACjBC,EAAa33D,KAAK23D,WAClBv3B,EAAQpgC,KAAKogC,MACb4uB,EAAwBhvD,KAAKgvD,uBAEnC,EAAA7nD,EAAA+X,MAAK,eAAiBy4C,GAsBtB,MAAM3yD,EAAKwqD,EAAK,GACdvqD,EAAKuqD,EAAK,GACVtqD,EAAKsqD,EAAK,GACVrqD,EAAKqqD,EAAK,GAGN6H,EAAclwD,EAAA3E,KAAKqB,8BAA8B7D,KAAKovD,QACtDyI,EAAiB1wD,EAAA3E,KAAKqB,8BAC1B7D,KAAK+jD,eAED+S,EAAgB,CACpBO,EAAY,GAAKQ,EAAe,GAChCR,EAAY,GAAKQ,EAAe,IAM5BC,EAAO93D,KAAK+3D,gBAChBP,EACAx3D,KAAKi8B,IAAI5V,OAAO9B,MAChBuyC,EAAc,IAEVkB,EAAOh4D,KAAK+3D,gBAChBN,EACAz3D,KAAKi8B,IAAI5V,OAAO7B,OAChBsyC,EAAc,IAGVzQ,EAAY6N,EAAM3P,eAAe3K,UACrC,UACAke,EAAKj+C,KACLm+C,EAAKn+C,MACL,GAEIysC,EAASD,EAAUp8B,QACnBguC,EAAWjJ,EAAsBC,qBAAqB3I,GAC5D2R,EAAShU,WAAaiQ,EAAMjQ,WAE5BjkD,KAAKk4D,+BAA+BD,EAAUP,EAAWt3B,GAEzD,IAAI+3B,EAAanzD,EACbozD,EAAanzD,EACbozD,EAAanzD,EACbozD,EAAanzD,EA2BjB,OAvBIH,EAAK,IACPmzD,EAAa,EACbE,GAAchrE,KAAK0Y,IAAIf,IAErBC,EAAK,IACPmzD,EAAa,EACbE,GAAcjrE,KAAK0Y,IAAId,IAEzBqhD,EAAO11B,WAAYknC,EAAK9iD,MAAQmjD,GAAeH,EAAKhjD,MAAQojD,GAC5DH,EAASx9D,UAAUq9D,EAAK9iD,MAAO,EAAG,EAAGgjD,EAAKhjD,MAAO,EAAG,GAIpDsxC,EAAO/rD,OAEPyF,KAAKu4D,SAASN,EAAUE,EAAYC,EAAYC,EAAYC,GAE5DL,EAASlU,eAAgB,EAAAz8C,EAAAkzC,qBAAoByd,EAASh8B,KAEtDg8B,EAAS5vC,oBAAoB9Q,GAE7B0gD,EAAShwC,aAEF,CACL5B,OAAQggC,EAAUhgC,OAClBypC,OAAQgI,EAAK9iD,MACb+6C,OAAQiI,EAAKhjD,MACbE,QAASijD,EACThjD,QAASijD,EA5Gc,CAgH3BL,eAAAA,CAAgBhpB,EAAMypB,EAAgBxjD,GAEpC+5B,EAAO1hD,KAAK0Y,IAAIgpC,GAKhB,MAAMrQ,EAAUrxC,KAAKsW,IAAIurD,EAAcuJ,iBAAkBD,GACzD,IAAI3+C,EAAOxsB,KAAKk1D,KAAKxT,EAAO/5B,GAM5B,OALI6E,GAAQ6kB,EACV7kB,EAAO6kB,EAEP1pB,EAAQ6E,EAAOk1B,EAEV,CAAE/5B,QAAO6E,OAd2B,CAiB7C0+C,QAAAA,CAASN,EAAUjzD,EAAIC,EAAIC,EAAIC,GAC7B,MAAMuzD,EAAYxzD,EAAKF,EACjB2zD,EAAaxzD,EAAKF,EACxBgzD,EAASh8B,IAAI13B,KAAKS,EAAIC,EAAIyzD,EAAWC,GACrCV,EAAS9e,QAAQ+D,kBAAiB,EAAA51C,EAAAkzC,qBAAoByd,EAASh8B,KAAM,CACnEj3B,EACAC,EACAC,EACAC,IAEF8yD,EAASvvE,OACTuvE,EAASx8D,SAXwB,CAcnCy8D,8BAAAA,CAA+BD,EAAUP,EAAWt3B,GAClD,MAAMnW,EAAUguC,EAASh8B,IACvBkd,EAAU8e,EAAS9e,QACrB,OAAQue,GACN,KAAKH,EACH,MAAMt7B,EAAMj8B,KAAKi8B,IACjBhS,EAAQq2B,UAAYrkB,EAAIqkB,UACxBr2B,EAAQo2B,YAAcpkB,EAAIokB,YAC1BlH,EAAQ+C,UAAYjgB,EAAIqkB,UACxBnH,EAAQgD,YAAclgB,EAAIokB,YAC1B,MACF,KAAKkX,EACH,MAAMqB,EAAWzxD,EAAA3E,KAAKC,aAAa29B,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAC7DnW,EAAQq2B,UAAYsY,EACpB3uC,EAAQo2B,YAAcuY,EAEtBzf,EAAQ+C,UAAY0c,EACpBzf,EAAQgD,YAAcyc,EACtB,MACF,QACE,MAAM,IAAIzxD,EAAAjG,YAAJ,2BAAAvV,OAA2C+rE,IApBI,CAwB3D3P,UAAAA,CAAW9rB,EAAKi4B,EAAOpM,EAASvK,GAE9B,IAAI6R,EAAStH,EACTvK,IAAaC,EAAS8R,UACxBF,EAASjoD,EAAA3E,KAAK/H,UAAU20D,EAAQ8E,EAAMnQ,eAClC/jD,KAAKovD,SACPA,EAASjoD,EAAA3E,KAAK/H,UAAU20D,EAAQpvD,KAAKovD,UAIzC,MAAMkI,EAAyBt3D,KAAK43D,oBAAoB1D,GAExD,IAAIG,EAAY,IAAIC,UAAUlF,GAG9BiF,EAAYA,EAAUzjC,UACpB0mC,EAAuBpiD,QACvBoiD,EAAuBniD,SAEzBk/C,EAAYA,EAAUr/C,MACpB,EAAIsiD,EAAuBxH,OAC3B,EAAIwH,EAAuBvH,QAG7B,MAAMhD,EAAU9wB,EAAIm4B,cAAckD,EAAuBjxC,OAAQ,UAGjE,OAFA0mC,EAAQ9R,aAAaoZ,GAEdtH,CA3BiC,EAzLxBhhC,gBAAdmjC,EAAN,mBAE4B,KArc5BlpE,EAAAkpE,cAAAA,6GCiBA,SAAuB7hD,GACrB,OAAQA,EAAOwxC,MACb,KAAK13C,EAAAjT,UAAUC,eACb,OAAOurD,EAA2BryC,GACpC,KAAKlG,EAAAjT,UAAUE,UACb,OAgDN,SAAAykE,GAOG,IAPuB,IACxBzvD,EADwB,OAExBq1C,EAAS,EAFe,KAGxBC,EAHwB,QAIxBF,EAAU,EAJc,MAKxBj6B,EALwB,OAMxBC,GANFq0C,EAQMzrE,EAAI,EACR,MAAM0rE,EAAQ1vD,EAAI/d,QAAU,EACtB0tE,EAAQ,IAAIx3D,YAAY6H,EAAIxZ,OAAQ6uD,EAAQqa,GAElD,GAAI3xD,EAAA/F,YAAYC,eAAgB,CAG9B,KAAOjU,EAAI0rE,EAAQ,EAAG1rE,GAAK,EAAGoxD,GAAW,EAAG,CAC1C,MAAMwa,EAAKD,EAAM3rE,GACX6rE,EAAKF,EAAM3rE,EAAI,GACf8rE,EAAKH,EAAM3rE,EAAI,GAErBsxD,EAAKF,GAAgB,WAALwa,EAChBta,EAAKF,EAAU,GAAMwa,IAAO,GAAOC,GAAM,EAAK,WAC9Cva,EAAKF,EAAU,GAAMya,IAAO,GAAOC,GAAM,GAAM,WAC/Cxa,EAAKF,EAAU,GAAM0a,IAAO,EAAK,UARS,CAW5C,IAAK,IAAIjzD,EAAQ,EAAJ7Y,EAAO+rE,EAAK/vD,EAAI/d,OAAQ4a,EAAIkzD,EAAIlzD,GAAK,EAChDy4C,EAAKF,KACHp1C,EAAInD,GAAMmD,EAAInD,EAAI,IAAM,EAAMmD,EAAInD,EAAI,IAAM,GAAM,UAhBxB,KAkBzB,CACL,KAAO7Y,EAAI0rE,EAAQ,EAAG1rE,GAAK,EAAGoxD,GAAW,EAAG,CAC1C,MAAMwa,EAAKD,EAAM3rE,GACX6rE,EAAKF,EAAM3rE,EAAI,GACf8rE,EAAKH,EAAM3rE,EAAI,GAErBsxD,EAAKF,GAAgB,IAALwa,EAChBta,EAAKF,EAAU,GAAMwa,GAAM,GAAOC,IAAO,EAAK,IAC9Cva,EAAKF,EAAU,GAAMya,GAAM,GAAOC,IAAO,GAAM,IAC/Cxa,EAAKF,EAAU,GAAM0a,GAAM,EAAK,GARU,CAW5C,IAAK,IAAIjzD,EAAQ,EAAJ7Y,EAAO+rE,EAAK/vD,EAAI/d,OAAQ4a,EAAIkzD,EAAIlzD,GAAK,EAChDy4C,EAAKF,KACFp1C,EAAInD,IAAM,GAAOmD,EAAInD,EAAI,IAAM,GAAOmD,EAAInD,EAAI,IAAM,EAAK,GAdzD,CAkBP,MAAO,CAAEw4C,SAAQD,UAzChB,CAvDU4a,CAAiB/rD,GAG5B,OAAO,IARsB,eAwG/B,SAAoBjE,EAAKs1C,GACvB,GAAIv3C,EAAA/F,YAAYC,eACd,IAAK,IAAIjU,EAAI,EAAGa,EAAKmb,EAAI/d,OAAQ+B,EAAIa,EAAIb,IACvCsxD,EAAKtxD,GAAe,MAATgc,EAAIhc,GAAgB,gBAGjC,IAAK,IAAIA,EAAI,EAAGa,EAAKmb,EAAI/d,OAAQ+B,EAAIa,EAAIb,IACvCsxD,EAAKtxD,GAAe,SAATgc,EAAIhc,GAAkB,GAPR,EA1G/B,IAAA+Z,EAAAC,EAAA,GAaA,SAASs4C,EAAT2Z,GAQG,IARiC,IAClCjwD,EADkC,OAElCq1C,EAAS,EAFyB,KAGlCC,EAHkC,MAIlCn6B,EAJkC,OAKlCC,EALkC,cAMlCm7B,EAAgB,WANkB,cAOlC2Z,GAAgB,GAPlBD,EASE,MAAMla,EAAQh4C,EAAA/F,YAAYC,eAAiB,WAAa,KACjDk4D,EAAaC,GAAcF,EAC9B,CAAC3Z,EAAeR,GAChB,CAACA,EAAOQ,GACN8Z,EAAgBl1C,GAAS,EACzBm1C,EAAyB,EAARn1C,EACjBu6B,EAAY11C,EAAI/d,OACtBqzD,EAAO,IAAIn9C,YAAYm9C,EAAK9uD,QAC5B,IAAI4uD,EAAU,EAEd,IAAK,IAAIpxD,EAAI,EAAGA,EAAIo3B,EAAQp3B,IAAK,CAC/B,IAAK,MAAMuW,EAAM86C,EAASgb,EAAehb,EAAS96C,EAAK86C,IAAU,CAC/D,MAAMsS,EAAOtS,EAASK,EAAY11C,EAAIq1C,GAAU,IAChDC,EAAKF,KAAoB,IAAPuS,EAAoByI,EAAaD,EACnD7a,EAAKF,KAAoB,GAAPuS,EAAmByI,EAAaD,EAClD7a,EAAKF,KAAoB,GAAPuS,EAAkByI,EAAaD,EACjD7a,EAAKF,KAAoB,GAAPuS,EAAiByI,EAAaD,EAChD7a,EAAKF,KAAoB,EAAPuS,EAAgByI,EAAaD,EAC/C7a,EAAKF,KAAoB,EAAPuS,EAAeyI,EAAaD,EAC9C7a,EAAKF,KAAoB,EAAPuS,EAAcyI,EAAaD,EAC7C7a,EAAKF,KAAoB,EAAPuS,EAAayI,EAAaD,CATmB,CAWjE,GAAuB,IAAnBG,EACF,SAEF,MAAM3I,EAAOtS,EAASK,EAAY11C,EAAIq1C,KAAY,IAClD,IAAK,IAAIx4C,EAAI,EAAGA,EAAIyzD,EAAgBzzD,IAClCy4C,EAAKF,KAAauS,EAAQ,GAAM,EAAI9qD,EAAMuzD,EAAaD,CAjB1B,CAoBjC,MAAO,CAAE9a,SAAQD,UA/BhB,yFCTH,MAAMlyC,EAAsBxd,OAAOC,OAAO,MA3B1C/I,EAAAsmB,oBAAAA,EA6BAA,EAAoBC,WAAa,KACjCD,EAAoBqS,UAAY,uFCfhC,IAAAxX,EAAAC,EAAA,GAWA,MAAMuyD,EAEE,EAFFA,EAGG,EAGHC,EAEI,EAFJA,EAGa,EAHbA,EAIG,EAJHA,EAKK,EALLA,EAMG,EANHA,EAOE,EAPFA,EAQW,EARXA,EASY,EAGlB,SAASC,EAAW9yD,GAWlB,OARIA,aAAkB9c,OACC,kBAAX8c,GAAkC,OAAXA,IAGjC,EAAAI,EAAAlc,aACE,kEAGI8b,EAAOvgB,MACb,IAAK,iBACH,OAAO,IAAI2gB,EAAAhG,eAAe4F,EAAOrf,SACnC,IAAK,sBACH,OAAO,IAAIyf,EAAApG,oBAAoBgG,EAAOrf,SACxC,IAAK,oBACH,OAAO,IAAIyf,EAAAzG,kBAAkBqG,EAAOrf,QAASqf,EAAO9W,MACtD,IAAK,8BACH,OAAO,IAAIkX,EAAAnG,4BAA4B+F,EAAOrf,QAASqf,EAAO9F,QAChE,IAAK,wBACH,OAAO,IAAIkG,EAAAvG,sBAAsBmG,EAAOrf,QAASqf,EAAOlG,SAC1D,QACE,OAAO,IAAIsG,EAAAvG,sBAAsBmG,EAAOrf,QAASqf,EAAO1a,YAvBlC,KAAAytE,EAAA,IAAAjmD,QA2BP,SAAAkmD,EAyNDlzD,GAChB,MAAMmzD,EAAWnzD,EAAKmzD,SACpBC,EAAaj6D,KAAKi6D,WAClBC,EAAarzD,EAAKozD,WAClBE,EAASn6D,KAAKm6D,OACVz6B,EAAO1/B,KACXo6B,EAASp6B,KAAKo6D,cAAcvzD,EAAKuzB,QAE7BigC,EAAa,CACjBn4C,OAAAA,CAAQ1hB,GAA4B,IAArBqZ,EAAAzuB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAO,EAAGuwB,EAAzBvwB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACE,GAAI0U,KAAKs6D,YACP,OAEF,MAAMC,EAAkBv6D,KAAKw6D,YAC7Bx6D,KAAKw6D,aAAe3gD,EAIhB0gD,EAAkB,GAAKv6D,KAAKw6D,aAAe,IAC7Cx6D,KAAKy6D,eAAiB,IAAItzD,EAAAZ,kBAC1BvG,KAAKoiB,MAAQpiB,KAAKy6D,eAAeh0D,SAEnC0zD,EAAOz9C,YACL,CACEu9C,aACAC,aACAQ,OAAQd,EACRI,WACAx5D,SAEFmb,EArBgC,EAyBpCqG,KAAAA,GACMhiB,KAAKs6D,cAGTt6D,KAAKs6D,aAAc,EACnBH,EAAOz9C,YAAY,CACjBu9C,aACAC,aACAQ,OAAQd,EACRI,oBAEKt6B,EAAKi7B,YAAYX,GAXlB,EAcR7vE,KAAAA,CAAM4c,IACJ,EAAAI,EAAAwa,QAAO5a,aAAkB9c,MAAO,kCAC5B+V,KAAKs6D,cAGTt6D,KAAKs6D,aAAc,EACnBH,EAAOz9C,YAAY,CACjBu9C,aACAC,aACAQ,OAAQd,EACRI,WACAjzD,OAAQ8yD,EAAW9yD,KAXT,EAed0zD,eAAgB,IAAItzD,EAAAZ,kBACpBub,OAAQ,KACRK,SAAU,KACVm4C,aAAa,EACbE,YAAa3zD,EAAK2zD,YAClBp4C,MAAO,MAGTi4C,EAAWI,eAAe9zD,UAC1B0zD,EAAWj4C,MAAQi4C,EAAWI,eAAeh0D,QAC7CzG,KAAK26D,YAAYX,GAAYK,EAE7B,IAAI3zD,SAAQ,SAAUC,GACpBA,EAAQyzB,EAAOvzB,EAAKA,KAAMwzD,GADG,IAE5BttD,MACD,WACEotD,EAAOz9C,YAAY,CACjBu9C,aACAC,aACAQ,OAAQd,EACRI,WACAjyE,SAAS,GAND,IASZ,SAAUgf,GACRozD,EAAOz9C,YAAY,CACjBu9C,aACAC,aACAQ,OAAQd,EACRI,WACAjzD,OAAQ8yD,EAAW9yD,IANL,GAvFE,UAAA6zD,EAmGF/zD,GACpB,MAAMmzD,EAAWnzD,EAAKmzD,SACpBC,EAAaj6D,KAAKi6D,WAClBC,EAAarzD,EAAKozD,WAClBE,EAASn6D,KAAKm6D,OACVU,EAAmB76D,KAAK86D,kBAAkBd,GAC9CK,EAAar6D,KAAK26D,YAAYX,GAEhC,OAAQnzD,EAAK6zD,QACX,KAAKd,EACC/yD,EAAK9e,QACP8yE,EAAiBE,UAAUp0D,UAE3Bk0D,EAAiBE,UAAUn0D,OAAOizD,EAAWhzD,EAAKE,SAEpD,MACF,KAAK6yD,EACC/yD,EAAK9e,QACP8yE,EAAiBG,SAASr0D,UAE1Bk0D,EAAiBG,SAASp0D,OAAOizD,EAAWhzD,EAAKE,SAEnD,MACF,KAAK6yD,EAEH,IAAKS,EAAY,CACfF,EAAOz9C,YAAY,CACjBu9C,aACAC,aACAQ,OAAQd,EACRI,WACAjyE,SAAS,IAEX,KARe,CAYbsyE,EAAWG,aAAe,GAAK3zD,EAAK2zD,YAAc,GACpDH,EAAWI,eAAe9zD,UAG5B0zD,EAAWG,YAAc3zD,EAAK2zD,YAE9B,IAAI9zD,SAAQ,SAAUC,GAAS,IAAAs0D,EAC7Bt0D,EAAQ,QAARs0D,EAAQZ,EAAWv4C,cAAX,IAAAm5C,OAAA,EAAAA,EAAA54D,KAAAg4D,GADqB,IAE5BttD,MACD,WACEotD,EAAOz9C,YAAY,CACjBu9C,aACAC,aACAQ,OAAQd,EACRI,WACAjyE,SAAS,GAND,IASZ,SAAUgf,GACRozD,EAAOz9C,YAAY,CACjBu9C,aACAC,aACAQ,OAAQd,EACRI,WACAjzD,OAAQ8yD,EAAW9yD,IANL,IAUpB,MACF,KAAK6yD,EAEH,IADA,EAAAzyD,EAAAwa,QAAOk5C,EAAkB,yCACrBA,EAAiBK,SACnB,MAEFL,EAAiBM,WAAWj5C,QAAQrb,EAAKrG,OACzC,MACF,KAAKo5D,EAEH,IADA,EAAAzyD,EAAAwa,QAAOk5C,EAAkB,uCACrBA,EAAiBK,SACnB,MAEFL,EAAiBK,UAAW,EAC5BL,EAAiBM,WAAWn5C,QAC5BnL,kBAAAijD,EAAA95D,KAAAo7D,GAAA/4D,KAAArC,KAA6B66D,EAAkBb,GAC/C,MACF,KAAKJ,GACH,EAAAzyD,EAAAwa,QAAOk5C,EAAkB,uCACzBA,EAAiBM,WAAWhxE,MAAM0vE,EAAWhzD,EAAKE,SAClD8P,kBAAAijD,EAAA95D,KAAAo7D,GAAA/4D,KAAArC,KAA6B66D,EAAkBb,GAC/C,MACF,KAAKJ,EACC/yD,EAAK9e,QACP8yE,EAAiBQ,WAAW10D,UAE5Bk0D,EAAiBQ,WAAWz0D,OAAOizD,EAAWhzD,EAAKE,SAErD8P,kBAAAijD,EAAA95D,KAAAo7D,GAAA/4D,KAAArC,KAA6B66D,EAAkBb,GAC/C,MACF,KAAKJ,EACH,IAAKS,EACH,MAGF,IAAI3zD,SAAQ,SAAUC,GAAS,IAAA20D,EAC7B30D,EAAQ,QAAR20D,EAAQjB,EAAWl4C,gBAAX,IAAAm5C,OAAA,EAAAA,EAAAj5D,KAAAg4D,EAAsBR,EAAWhzD,EAAKE,SADjB,IAE5BgG,MACD,WACEotD,EAAOz9C,YAAY,CACjBu9C,aACAC,aACAQ,OAAQd,EACRI,WACAjyE,SAAS,GAND,IASZ,SAAUgf,GACRozD,EAAOz9C,YAAY,CACjBu9C,aACAC,aACAQ,OAAQd,EACRI,WACAjzD,OAAQ8yD,EAAW9yD,IANL,IAUpBszD,EAAWI,eAAe7zD,OAAOizD,EAAWhzD,EAAKE,SACjDszD,EAAWC,aAAc,SAClBt6D,KAAK26D,YAAYX,GACxB,MACF,QACE,MAAM,IAAI/vE,MAAM,0BA/HM,gBAAAmxE,EAmIEP,EAAkBb,GAAU,IAAAuB,EAAAC,EAAAC,QAGlD/0D,QAAQg1D,WAAW,CACvB,QADuBH,EACvBV,EAAiBE,iBAAjB,IAAAQ,OAAA,EAAAA,EAA4B90D,QAC5B,QAFuB+0D,EAEvBX,EAAiBG,gBAAjB,IAAAQ,OAAA,EAAAA,EAA2B/0D,QAC3B,QAHuBg1D,EAGvBZ,EAAiBQ,kBAAjB,IAAAI,OAAA,EAAAA,EAA6Bh1D,iBAExBzG,KAAK86D,kBAAkBd,EAR0B,CAtgB5Dh0E,EAAAgoB,eAuEA,MACE/N,WAAAA,CAAYg6D,EAAYC,EAAYC,GAAQlmD,4BAAA,KAAA6lD,GAC1C95D,KAAKi6D,WAAaA,EAClBj6D,KAAKk6D,WAAaA,EAClBl6D,KAAKm6D,OAASA,EACdn6D,KAAK27D,WAAa,EAClB37D,KAAKg6D,SAAW,EAChBh6D,KAAK26D,YAAc7rE,OAAOC,OAAO,MACjCiR,KAAK86D,kBAAoBhsE,OAAOC,OAAO,MACvCiR,KAAK47D,qBAAuB9sE,OAAOC,OAAO,MAC1CiR,KAAKo6D,cAAgBtrE,OAAOC,OAAO,MAEnCiR,KAAK67D,mBAAqBj/C,IACxB,MAAM/V,EAAO+V,EAAM/V,KACnB,GAAIA,EAAKqzD,aAAel6D,KAAKi6D,WAC3B,OAEF,GAAIpzD,EAAK6zD,OAEP,YADA7jD,kBAAAijD,EAAA95D,KAAA46D,GAAAv4D,KAAArC,KAA2B6G,GAG7B,GAAIA,EAAK2R,SAAU,CACjB,MAAMmjD,EAAa90D,EAAK80D,WAClBvjD,EAAapY,KAAK47D,qBAAqBD,GAC7C,IAAKvjD,EACH,MAAM,IAAInuB,MAAJ,2BAAA0B,OAAqCgwE,IAI7C,UAFO37D,KAAK47D,qBAAqBD,GAE7B90D,EAAK2R,WAAamhD,EACpBvhD,EAAWzR,QAAQE,EAAKA,UACnB,IAAIA,EAAK2R,WAAamhD,EAG3B,MAAM,IAAI1vE,MAAM,4BAFhBmuB,EAAWxR,OAAOizD,EAAWhzD,EAAKE,QAC7B,CAGP,MAfiB,CAiBnB,MAAMqzB,EAASp6B,KAAKo6D,cAAcvzD,EAAKuzB,QACvC,IAAKA,EACH,MAAM,IAAInwC,MAAJ,+BAAA0B,OAAyCkb,EAAKuzB,SAEtD,GAAIvzB,EAAK80D,WAAT,CACE,MAAMG,EAAe97D,KAAKi6D,WACpB8B,EAAel1D,EAAKozD,WAE1B,IAAIvzD,SAAQ,SAAUC,GACpBA,EAAQyzB,EAAOvzB,EAAKA,MADS,IAE5BkG,MACD,SAAUixB,GACRm8B,EAAOz9C,YAAY,CACjBu9C,WAAY6B,EACZ5B,WAAY6B,EACZvjD,SAAUmhD,EACVgC,WAAY90D,EAAK80D,WACjB90D,KAAMm3B,GANQ,IASlB,SAAUj3B,GACRozD,EAAOz9C,YAAY,CACjBu9C,WAAY6B,EACZ5B,WAAY6B,EACZvjD,SAAUmhD,EACVgC,WAAY90D,EAAK80D,WACjB50D,OAAQ8yD,EAAW9yD,IANL,GAhBD,MA4BjBF,EAAKmzD,SACPnjD,kBAAAijD,EAAA95D,KAAA+5D,GAAA13D,KAAArC,KAAuB6G,GAGzBuzB,EAAOvzB,EAAKA,KAAZ,EAEFszD,EAAOnxE,iBAAiB,UAAWgX,KAAK67D,mBA3EE,CA8E5Cp9C,EAAAA,CAAGu9C,EAAYC,GAOb,MAAMC,EAAKl8D,KAAKo6D,cAChB,GAAI8B,EAAGF,GACL,MAAM,IAAI/xE,MAAJ,0CAAA0B,OAAoDqwE,EAAW,MAEvEE,EAAGF,GAAcC,CAXK,CAoBxB7tD,IAAAA,CAAK4tD,EAAYn1D,EAAM8U,GACrB3b,KAAKm6D,OAAOz9C,YACV,CACEu9C,WAAYj6D,KAAKi6D,WACjBC,WAAYl6D,KAAKk6D,WACjB9/B,OAAQ4hC,EACRn1D,QAEF8U,EAR8B,CAoBlClN,eAAAA,CAAgButD,EAAYn1D,EAAM8U,GAChC,MAAMggD,EAAa37D,KAAK27D,aAClBvjD,EAAa,IAAIjR,EAAAZ,kBACvBvG,KAAK47D,qBAAqBD,GAAcvjD,EACxC,IACEpY,KAAKm6D,OAAOz9C,YACV,CACEu9C,WAAYj6D,KAAKi6D,WACjBC,WAAYl6D,KAAKk6D,WACjB9/B,OAAQ4hC,EACRL,aACA90D,QAEF8U,EATA,CAWF,MAAO5rB,GACPqoB,EAAWxR,OAAO7W,EADP,CAGb,OAAOqoB,EAAW3R,OAlByB,CA+B7CkT,cAAAA,CAAeqiD,EAAYn1D,EAAMs1D,EAAkBxgD,GACjD,MAAMq+C,EAAWh6D,KAAKg6D,WACpBC,EAAaj6D,KAAKi6D,WAClBC,EAAal6D,KAAKk6D,WAClBC,EAASn6D,KAAKm6D,OAEhB,OAAO,IAAIiC,eACT,CACEjuB,MAAOgtB,IACL,MAAMkB,EAAkB,IAAIl1D,EAAAZ,kBAoB5B,OAnBAvG,KAAK86D,kBAAkBd,GAAY,CACjCmB,aACAJ,UAAWsB,EACXrB,SAAU,KACVK,WAAY,KACZH,UAAU,GAEZf,EAAOz9C,YACL,CACEu9C,aACAC,aACA9/B,OAAQ4hC,EACRhC,WACAnzD,OACA2zD,YAAaW,EAAWX,aAE1B7+C,GAGK0gD,EAAgB51D,OAAvB,EAGF61D,KAAMnB,IACJ,MAAMoB,EAAiB,IAAIp1D,EAAAZ,kBAW3B,OAVAvG,KAAK86D,kBAAkBd,GAAUgB,SAAWuB,EAC5CpC,EAAOz9C,YAAY,CACjBu9C,aACAC,aACAQ,OAAQd,EACRI,WACAQ,YAAaW,EAAWX,cAInB+B,EAAe91D,OAAtB,EAGFwU,OAAQlU,KACN,EAAAI,EAAAwa,QAAO5a,aAAkB9c,MAAO,mCAChC,MAAMuyE,EAAmB,IAAIr1D,EAAAZ,kBAW7B,OAVAvG,KAAK86D,kBAAkBd,GAAUqB,WAAamB,EAC9Cx8D,KAAK86D,kBAAkBd,GAAUkB,UAAW,EAC5Cf,EAAOz9C,YAAY,CACjBu9C,aACAC,aACAQ,OAAQd,EACRI,WACAjzD,OAAQ8yD,EAAW9yD,KAGdy1D,EAAiB/1D,OAAxB,GAGJ01D,EA/D0D,CAoT9D/sD,OAAAA,GACEpP,KAAKm6D,OAAOr9C,oBAAoB,UAAW9c,KAAK67D,mBADxC,iFClgBZ,IAAA10D,EAAAC,EAAA,GAAAq1D,EAAA,IAAAn2D,QAAAo2D,EAAA,IAAAp2D,QAfAtgB,EAAA0/B,SAiBA,MAKEzlB,WAAAA,CAAA08D,GAAqC,IAAzB,WAAEC,EAAF,QAAc1/B,GAA1By/B,EAAAn2D,2BAAA,KAAAi2D,OAAA,GAAAj2D,2BAAA,KAAAk2D,OAAA,GACE51D,sBAAA21D,EAAAz8D,KAAoB48D,GACpB91D,sBAAA41D,EAAA18D,KAAak9B,EAFsB,CAKrC2/B,MAAAA,GACE,OAAA51D,sBAAAy1D,EAAO18D,KADA,CAITrR,GAAAA,CAAInI,GAAM,IAAAs2E,EACR,OAAO,QAAPA,EAAO71D,sBAAAw1D,EAAAz8D,MAAkBrR,IAAInI,UAAtB,IAAAs2E,EAAAA,EAA+B,IAD9B,CAIVlzC,MAAAA,GACE,OAAO,EAAAziB,EAAA0iB,eAAA5iB,sBAAAw1D,EAAcz8D,MADd,CAITse,GAAAA,CAAI93B,GACF,OAAOygB,sBAAAw1D,EAAAz8D,MAAkBse,IAAI93B,EADrB,8FCxBZ,IAAA2gB,EAAAC,EAAA,GACAqhB,EAAArhB,EAAA,GAEA,MAAM21D,EAAWC,OAAO,YAAxB,IAAAC,EAAA,IAAA32D,QAEA,MAAM42D,EAGJj9D,WAAAA,CAAYzZ,EAAMgvB,GAAQhP,2BAAA,KAAAy2D,GAFf,GAGTj9D,KAAKxZ,KAAOA,EACZwZ,KAAKwV,OAASA,CAFU,CAQ1B,WAAIw8C,GACF,OAAA/qD,sBAAAg2D,EAAOj9D,KADK,CAOdm9D,WAAAA,CAAYC,EAAUpL,GAChBoL,IAAaL,IACf,EAAA51D,EAAAlc,aAAY,yCAEd6b,sBAAAm2D,EAAAj9D,KAAgBgyD,EAJa,EAlBN,IAAAqL,EAAA,IAAA/2D,QAAAg3D,EAAA,IAAAh3D,QAAAi3D,EAAA,IAAAj3D,QAAAk3D,EAAA,IAAAl3D,QAAAm3D,EAAA,IAAA5pD,QA0BC,SAAA6pD,EA4CIC,GAC5B,MAAMtyE,EAASsyE,EAAMtyE,OACrB,GAAIA,EAAS,EACX,OAAO,EAET,MAAMuyE,EAAWD,EAAM,GACvB,IAAK,IAAIvwE,EAAI,EAAGA,EAAI/B,EAAQ+B,IAAK,CAC/B,MAAM8tC,EAAUyiC,EAAMvwE,GACtB,IAAIywE,EACJ,GAAIz3E,MAAMC,QAAQ60C,GAChB2iC,EAAAhnD,kBAAA4mD,EAAQz9D,KAAA09D,GAAAr7D,KAAArC,KAAmCk7B,OACtC,KAAIj0B,sBAAAq2D,EAAAt9D,MAAase,IAAI4c,GAI1B,OADA,EAAA/zB,EAAA5d,MAAA,qCAAAoC,OAA0CuvC,KACnC,EAHP2iC,EAAQ52D,sBAAAq2D,EAAAt9D,MAAarR,IAAIusC,GAAS82B,OAC7B,CAIP,OAAQ4L,GACN,IAAK,MACH,IAAKC,EACH,OAAO,EAET,MACF,IAAK,KACH,GAAIA,EACF,OAAO,EAET,MACF,IAAK,MACH,OAAQA,EACV,QACE,OAAO,EAzBoB,CA4BjC,MAAoB,QAAbD,CAlC4B,CA1FvC53E,EAAAo/B,sBA8CA,MASEnlB,WAAAA,CAAY4G,GAIV,GAJgBoN,4BAAA,KAAAwpD,GAAAj3D,2BAAA,KAAA62D,EARD,MAAjB72D,2BAAA,KAAA82D,EAEU,IAAIjvE,KAAdmY,2BAAA,KAAA+2D,EAEe,MAAf/2D,2BAAA,KAAAg3D,EAES,MAGPx9D,KAAKxZ,KAAO,KACZwZ,KAAK89D,QAAU,KAEF,OAATj3D,EAAJ,CAGA7G,KAAKxZ,KAAOqgB,EAAKrgB,KACjBwZ,KAAK89D,QAAUj3D,EAAKi3D,QACpBh3D,sBAAA02D,EAAAx9D,KAAc6G,EAAKk3D,OACnB,IAAK,MAAMtO,KAAS5oD,EAAKm3D,OACvB/2D,sBAAAq2D,EAAAt9D,MAAaiX,IACXw4C,EAAMx9C,GACN,IAAIirD,EAAqBzN,EAAMjpE,KAAMipE,EAAMj6C,SAI/C,GAAuB,QAAnB3O,EAAKo3D,UACP,IAAK,MAAMxO,KAASxoD,sBAAAq2D,EAAAt9D,MAAa8a,SAC/B20C,EAAM0N,YAAYJ,GAAU,GAIhC,IAAK,MAAMt+C,KAAM5X,EAAK4X,GACpBxX,sBAAAq2D,EAAAt9D,MAAarR,IAAI8vB,GAAI0+C,YAAYJ,GAAU,GAG7C,IAAK,MAAMmB,KAAOr3D,EAAKq3D,IACrBj3D,sBAAAq2D,EAAAt9D,MAAarR,IAAIuvE,GAAKf,YAAYJ,GAAU,GAI9Cj2D,sBAAAy2D,EAAAv9D,KAAoBA,KAAKm+D,UA5BN,CAJH,CAwElBlM,SAAAA,CAAUxC,GACR,GAA0B,IAAtBxoD,sBAAAq2D,EAAAt9D,MAAa6Z,KACf,OAAO,EAET,IAAK41C,EAEH,OADA,EAAAtoD,EAAA5d,MAAK,wCACE,EAET,GAAmB,QAAfkmE,EAAM/oE,KACR,OAAKugB,sBAAAq2D,EAAAt9D,MAAase,IAAImxC,EAAMx9C,IAIrBhL,sBAAAq2D,EAAAt9D,MAAarR,IAAI8gE,EAAMx9C,IAAI+/C,UAHhC,EAAA7qD,EAAA5d,MAAA,qCAAAoC,OAA0C8jE,EAAMx9C,MACzC,GAGJ,GAAmB,SAAfw9C,EAAM/oE,KAAiB,CAEhC,GAAI+oE,EAAM2O,WACR,OAAAvnD,kBAAA4mD,EAAOz9D,KAAA09D,GAAAr7D,KAAArC,KAAmCyvD,EAAM2O,YAElD,IAAK3O,EAAM4O,QAA2B,UAAjB5O,EAAM4O,OAAoB,CAE7C,IAAK,MAAMpsD,KAAMw9C,EAAM6O,IAAK,CAC1B,IAAKr3D,sBAAAq2D,EAAAt9D,MAAase,IAAIrM,GAEpB,OADA,EAAA9K,EAAA5d,MAAA,qCAAAoC,OAA0CsmB,KACnC,EAET,GAAIhL,sBAAAq2D,EAAAt9D,MAAarR,IAAIsjB,GAAI+/C,QACvB,OAAO,CANiB,CAS5B,OAAO,CAXsC,CAYxC,GAAqB,UAAjBvC,EAAM4O,OAAoB,CACnC,IAAK,MAAMpsD,KAAMw9C,EAAM6O,IAAK,CAC1B,IAAKr3D,sBAAAq2D,EAAAt9D,MAAase,IAAIrM,GAEpB,OADA,EAAA9K,EAAA5d,MAAA,qCAAAoC,OAA0CsmB,KACnC,EAET,IAAKhL,sBAAAq2D,EAAAt9D,MAAarR,IAAIsjB,GAAI+/C,QACxB,OAAO,CANiB,CAS5B,OAAO,CAV4B,CAW9B,GAAqB,WAAjBvC,EAAM4O,OAAqB,CACpC,IAAK,MAAMpsD,KAAMw9C,EAAM6O,IAAK,CAC1B,IAAKr3D,sBAAAq2D,EAAAt9D,MAAase,IAAIrM,GAEpB,OADA,EAAA9K,EAAA5d,MAAA,qCAAAoC,OAA0CsmB,KACnC,EAET,IAAKhL,sBAAAq2D,EAAAt9D,MAAarR,IAAIsjB,GAAI+/C,QACxB,OAAO,CANiB,CAS5B,OAAO,CAV6B,CAW/B,GAAqB,WAAjBvC,EAAM4O,OAAqB,CACpC,IAAK,MAAMpsD,KAAMw9C,EAAM6O,IAAK,CAC1B,IAAKr3D,sBAAAq2D,EAAAt9D,MAAase,IAAIrM,GAEpB,OADA,EAAA9K,EAAA5d,MAAA,qCAAAoC,OAA0CsmB,KACnC,EAET,GAAIhL,sBAAAq2D,EAAAt9D,MAAarR,IAAIsjB,GAAI+/C,QACvB,OAAO,CANiB,CAS5B,OAAO,CAV6B,CAatC,OADA,EAAA7qD,EAAA5d,MAAA,mCAAAoC,OAAwC8jE,EAAM4O,OAAO,OAC9C,CApDyB,CAuDlC,OADA,EAAAl3D,EAAA5d,MAAA,sBAAAoC,OAA2B8jE,EAAM/oE,KAAK,OAC/B,CArEQ,CAwEjB63E,aAAAA,CAActsD,GAAoB,IAAhB+/C,IAAA5mE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACX6b,sBAAAq2D,EAAAt9D,MAAase,IAAIrM,IAItBhL,sBAAAq2D,EAAAt9D,MAAarR,IAAIsjB,GAAIkrD,YAAYJ,IAAY/K,GAE7ClrD,sBAAAu2D,EAAAr9D,KAAsB,QALpB,EAAAmH,EAAA5d,MAAA,qCAAAoC,OAA0CsmB,GAFZ,CAUlC,wBAAIusD,GACF,OAA6B,OAAtBv3D,sBAAAs2D,EAAAv9D,OAA8BA,KAAKm+D,YAALl3D,sBAAAs2D,EAAmBv9D,KAD/B,CAI3By+D,QAAAA,GACE,OAAKx3D,sBAAAq2D,EAAAt9D,MAAa6Z,KAGlB5S,sBAAAu2D,EAAIx9D,MACKiH,sBAAAu2D,EAAAx9D,MAAYwD,QAEd,IAAIyD,sBAAAq2D,EAAAt9D,MAAa9Q,QALf,IAFA,CAUXwvE,SAAAA,GACE,OAAOz3D,sBAAAq2D,EAAAt9D,MAAa6Z,KAAO,GAAI,EAAA1S,EAAA0iB,eAAA5iB,sBAAAq2D,EAAct9D,OAAgB,IADnD,CAIZ2+D,QAAAA,CAAS1sD,GACP,OAAOhL,sBAAAq2D,EAAAt9D,MAAarR,IAAIsjB,IAAO,IADpB,CAIbksD,OAAAA,GACE,GAA4B,OAAxBl3D,sBAAAo2D,EAAAr9D,MACF,OAAAiH,sBAAAo2D,EAAOr9D,MAET,MAAMkhB,EAAO,IAAIuH,EAAAuB,eAEjB,IAAK,MAAO/X,EAAIw9C,KAAhBxoD,sBAAAq2D,EAA0Bt9D,MACxBkhB,EAAKmJ,OAAL,GAAA1+B,OAAesmB,EAAG,KAAAtmB,OAAG8jE,EAAMuC,UAE7B,OAAAlrD,sBAAAu2D,EAAQr9D,KAAsBkhB,EAAKsJ,YAT3B,+FCnNZ,IAAArjB,EAAAC,EAAA,GACAE,EAAAF,EAAA,GArBAphB,EAAAsnB,uBAwBA,MACErN,WAAAA,CAAA2+D,EASEC,GACA,IATA,OACExzE,EADF,YAEEkiB,EAFF,gBAGEC,GAAkB,EAHpB,2BAIEC,EAA6B,KAJ/B,aAKErC,GAAe,EALjB,cAMEC,GAAgB,GAPpBuzD,EAoBE,IATA,EAAAz3D,EAAAwa,QACEk9C,EACA,+EAGF7+D,KAAK8+D,cAAgB,GACrB9+D,KAAK++D,iBAAmBvxD,EACxBxN,KAAKg/D,4BAA8BvxD,GAE/B,OAAAF,QAAA,IAAAA,OAAA,EAAAA,EAAaliB,QAAS,EAAG,CAG3B,MAAMuE,EACJ2d,aAAuBrgB,YACvBqgB,EAAYzf,aAAeyf,EAAY3d,OAAO9B,WAC1Cyf,EAAY3d,OACZ,IAAI1C,WAAWqgB,GAAa3d,OAClCoQ,KAAK8+D,cAAc1uE,KAAKR,EARG,CAW7BoQ,KAAKi/D,uBAAyBJ,EAC9B7+D,KAAKk/D,uBAAyB7zD,EAC9BrL,KAAKm/D,mBAAqB/zD,EAC1BpL,KAAKo/D,eAAiB/zE,EAEtB2U,KAAKq/D,mBAAqB,KAC1Br/D,KAAKs/D,cAAgB,GAErBt/D,KAAKi/D,uBAAuBnvD,kBAAiB,CAACM,EAAO5P,KACnDR,KAAKu/D,eAAe,CAAEnvD,QAAO5P,SAA7B,IAGFR,KAAKi/D,uBAAuBjvD,qBAAoB,CAACM,EAAQC,KACvDvQ,KAAKw/D,YAAY,CAAElvD,SAAQC,SAA3B,IAGFvQ,KAAKi/D,uBAAuBhvD,4BAA2BzP,IACrDR,KAAKu/D,eAAe,CAAE/+D,SAAtB,IAGFR,KAAKi/D,uBAAuB/uD,4BAA2B,KACrDlQ,KAAKy/D,oBAAL,IAGFz/D,KAAKi/D,uBAAuBvuD,gBA7C5B,CAgDF6uD,cAAAA,CAAAG,GAAiC,IAAlB,MAAEtvD,EAAF,MAAS5P,GAAxBk/D,EAGE,MAAM9vE,EACJ4Q,aAAiBtT,YACjBsT,EAAM1S,aAAe0S,EAAM5Q,OAAO9B,WAC9B0S,EAAM5Q,OACN,IAAI1C,WAAWsT,GAAO5Q,OAE5B,QAActE,IAAV8kB,EACEpQ,KAAKq/D,mBACPr/D,KAAKq/D,mBAAmBM,SAAS/vE,GAEjCoQ,KAAK8+D,cAAc1uE,KAAKR,OAErB,CACL,MAAMgwE,EAAQ5/D,KAAKs/D,cAAcx4E,MAAK,SAAUg8B,GAC9C,OAAIA,EAAY+8C,SAAWzvD,IAG3B0S,EAAY68C,SAAS/vE,IACd,EALoD,KAO7D,EAAAuX,EAAAwa,QACEi+C,EACA,0EAVG,CAfwB,CA8BjC,0BAAIE,GAAyB,IAAAC,EAAAC,EAC3B,OAAO,QAAPD,EAAO,QAAPC,EAAOhgE,KAAKq/D,0BAAL,IAAAW,OAAA,EAAAA,EAAyBC,eAAzB,IAAAF,EAAAA,EAAoC,CADhB,CAI7BP,WAAAA,CAAY39C,GACmB,IAAAq+C,EAAAC,EAGtBC,EAAAC,OAHW/0E,IAAdu2B,EAAItR,MAEN,QAAA2vD,EAAAlgE,KAAKs/D,cAAc,UAAnB,IAAAY,GAAA,QAAAC,EAAAD,EAAuB/wD,kBAAvB,IAAAgxD,GAAAA,EAAA99D,KAAA69D,EAAoC,CAAE5vD,OAAQuR,EAAIvR,SAElD,QAAA8vD,EAAApgE,KAAKq/D,0BAAL,IAAAe,GAAA,QAAAC,EAAAD,EAAyBjxD,kBAAzB,IAAAkxD,GAAAA,EAAAh+D,KAAA+9D,EAAsC,CACpC9vD,OAAQuR,EAAIvR,OACZC,MAAOsR,EAAItR,OAPA,CAYjBkvD,kBAAAA,GAAqB,IAAAa,EACnB,QAAAA,EAAAtgE,KAAKq/D,0BAAL,IAAAiB,GAAAA,EAAyB9yD,kBACzBxN,KAAK++D,kBAAmB,CAFL,CAKrBwB,kBAAAA,CAAmBpmD,GACjB,MAAM/sB,EAAI4S,KAAKs/D,cAAckB,QAAQrmD,GACjC/sB,GAAK,GACP4S,KAAKs/D,cAAcvgC,OAAO3xC,EAAG,EAHN,CAO3Bw0B,aAAAA,IACE,EAAAza,EAAAwa,SACG3hB,KAAKq/D,mBACN,iEAEF,MAAMoB,EAAezgE,KAAK8+D,cAE1B,OADA9+D,KAAK8+D,cAAgB,KACd,IAAI4B,EACT1gE,KACAygE,EACAzgE,KAAK++D,iBACL/+D,KAAKg/D,4BAXO,CAehBj8C,cAAAA,CAAe3S,EAAOQ,GACpB,GAAIA,GAAO5Q,KAAK8/D,uBACd,OAAO,KAET,MAAM3lD,EAAS,IAAIwmD,EAAkC3gE,KAAMoQ,EAAOQ,GAGlE,OAFA5Q,KAAKi/D,uBAAuBtuD,iBAAiBP,EAAOQ,GACpD5Q,KAAKs/D,cAAclvE,KAAK+pB,GACjBA,CAPkB,CAU3BsH,iBAAAA,CAAkB1a,GAAQ,IAAA65D,EACxB,QAAAA,EAAA5gE,KAAKq/D,0BAAL,IAAAuB,GAAAA,EAAyB3lD,OAAOlU,GAEhC,IAAK,MAAMoT,KAAUna,KAAKs/D,cAAc97D,MAAM,GAC5C2W,EAAOc,OAAOlU,GAEhB/G,KAAKi/D,uBAAuBpuD,OANJ,GAW5B,MAAM6vD,EACJzgE,WAAAA,CACEy6D,EACA+F,GAGA,IAFAjzD,EAAApiB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACAqiB,EAAAriB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,KAE7B4U,KAAK6gE,QAAUnG,EACf16D,KAAK8gE,MAAQtzD,IAAmB,EAChCxN,KAAK+gE,WAAY,EAAAz5D,EAAA05D,WAAUvzD,GACvBA,EACA,KACJzN,KAAK8+D,cAAgB2B,GAAgB,GACrCzgE,KAAKigE,QAAU,EACf,IAAK,MAAMz/D,KAASR,KAAK8+D,cACvB9+D,KAAKigE,SAAWz/D,EAAM1S,WAExBkS,KAAKihE,UAAY,GACjBjhE,KAAKkhE,cAAgBx6D,QAAQC,UAC7B+zD,EAAO2E,mBAAqBr/D,KAE5BA,KAAKmP,WAAa,IAflB,CAkBFwwD,QAAAA,CAASn/D,GACHR,KAAK8gE,QAGL9gE,KAAKihE,UAAU51E,OAAS,EACA2U,KAAKihE,UAAU/pB,QACvBvwC,QAAQ,CAAE1X,MAAOuR,EAAOia,MAAM,IAEhDza,KAAK8+D,cAAc1uE,KAAKoQ,GAE1BR,KAAKigE,SAAWz/D,EAAM1S,WAVR,CAahB,gBAAI00B,GACF,OAAOxiB,KAAKkhE,aADK,CAInB,YAAIp8C,GACF,OAAO9kB,KAAK+gE,SADC,CAIf,oBAAIp+C,GACF,OAAO3iB,KAAK6gE,QAAQ1B,iBADC,CAIvB,wBAAIz8C,GACF,OAAO1iB,KAAK6gE,QAAQ3B,qBADK,CAI3B,iBAAIr8C,GACF,OAAO7iB,KAAK6gE,QAAQzB,cADF,CAIpB,UAAM7kD,GACJ,GAAIva,KAAK8+D,cAAczzE,OAAS,EAE9B,MAAO,CAAE4D,MADK+Q,KAAK8+D,cAAc5nB,QACVz8B,MAAM,GAE/B,GAAIza,KAAK8gE,MACP,MAAO,CAAE7xE,WAAO3D,EAAWmvB,MAAM,GAEnC,MAAM0mD,EAAoB,IAAIh6D,EAAAZ,kBAE9B,OADAvG,KAAKihE,UAAU7wE,KAAK+wE,GACbA,EAAkB16D,OAVd,CAabwU,MAAAA,CAAOlU,GACL/G,KAAK8gE,OAAQ,EACb,IAAK,MAAMK,KAAqBnhE,KAAKihE,UACnCE,EAAkBx6D,QAAQ,CAAE1X,WAAO3D,EAAWmvB,MAAM,IAEtDza,KAAKihE,UAAU51E,OAAS,CALX,CAQfmiB,eAAAA,GACMxN,KAAK8gE,QAGT9gE,KAAK8gE,OAAQ,EAJG,EASpB,MAAMH,EACJ1gE,WAAAA,CAAYy6D,EAAQtqD,EAAOQ,GACzB5Q,KAAK6gE,QAAUnG,EACf16D,KAAK6/D,OAASzvD,EACdpQ,KAAKohE,KAAOxwD,EACZ5Q,KAAKqhE,aAAe,KACpBrhE,KAAKihE,UAAY,GACjBjhE,KAAK8gE,OAAQ,EAEb9gE,KAAKmP,WAAa,IARY,CAWhCwwD,QAAAA,CAASn/D,GACP,IAAIR,KAAK8gE,MAAT,CAGA,GAA8B,IAA1B9gE,KAAKihE,UAAU51E,OACjB2U,KAAKqhE,aAAe7gE,MACf,CACsBR,KAAKihE,UAAU/pB,QACvBvwC,QAAQ,CAAE1X,MAAOuR,EAAOia,MAAM,IACjD,IAAK,MAAM0mD,KAAqBnhE,KAAKihE,UACnCE,EAAkBx6D,QAAQ,CAAE1X,WAAO3D,EAAWmvB,MAAM,IAEtDza,KAAKihE,UAAU51E,OAAS,CANnB,CAQP2U,KAAK8gE,OAAQ,EACb9gE,KAAK6gE,QAAQN,mBAAmBvgE,KAdhB,CADF,CAkBhB,wBAAI0iB,GACF,OAAO,CADkB,CAI3B,UAAMnI,GACJ,GAAIva,KAAKqhE,aAAc,CACrB,MAAM7gE,EAAQR,KAAKqhE,aAEnB,OADArhE,KAAKqhE,aAAe,KACb,CAAEpyE,MAAOuR,EAAOia,MAAM,EAHR,CAKvB,GAAIza,KAAK8gE,MACP,MAAO,CAAE7xE,WAAO3D,EAAWmvB,MAAM,GAEnC,MAAM0mD,EAAoB,IAAIh6D,EAAAZ,kBAE9B,OADAvG,KAAKihE,UAAU7wE,KAAK+wE,GACbA,EAAkB16D,OAXd,CAcbwU,MAAAA,CAAOlU,GACL/G,KAAK8gE,OAAQ,EACb,IAAK,MAAMK,KAAqBnhE,KAAKihE,UACnCE,EAAkBx6D,QAAQ,CAAE1X,WAAO3D,EAAWmvB,MAAM,IAEtDza,KAAKihE,UAAU51E,OAAS,EACxB2U,KAAK6gE,QAAQN,mBAAmBvgE,KANnB,uFCzSjB,IAAAmH,EAAAC,EAAA,GAMAk6D,EAAAl6D,EAAA,IAaA,SAASm6D,EAAmBC,EAAS13D,EAAiB23D,GACpD,MAAO,CACLC,OAAQ,MACRF,UACAG,OAAQF,EAAgBE,OACxB35B,KAAM,OACN45B,YAAa93D,EAAkB,UAAY,cAC3C+3D,SAAU,SAPyD,CAWvE,SAASC,EAAcj4D,GACrB,MAAM23D,EAAU,IAAIO,QACpB,IAAK,MAAM/hB,KAAYn2C,EAAa,CAClC,MAAM5a,EAAQ4a,EAAYm2C,QACZ10D,IAAV2D,GAGJuyE,EAAQruC,OAAO6sB,EAAU/wD,EALS,CAOpC,OAAOuyE,CAT2B,CAYpC,SAASQ,EAAetzD,GACtB,OAAIA,aAAexhB,WACVwhB,EAAI9e,OAET8e,aAAeuT,YACVvT,IAET,EAAAvH,EAAA5d,MAAA,4CAAAoC,OAAiD+iB,IAC1C,IAAIxhB,WAAWwhB,GAAK9e,OARA,CAzD7B5J,EAAA2nB,eAqEA,MACE1N,WAAAA,CAAYuO,GACVxO,KAAKwO,OAASA,EACdxO,KAAKiiE,OAAS,YAAY53E,KAAKmkB,EAAOtjB,KACtC8U,KAAK6J,YAAe7J,KAAKiiE,QAAUzzD,EAAO3E,aAAgB,CAAC,EAE3D7J,KAAKq/D,mBAAqB,KAC1Br/D,KAAKkiE,qBAAuB,EANV,CASpB,0BAAIpC,GAAyB,IAAAqC,EAAAC,EAC3B,OAAO,QAAPD,EAAO,QAAPC,EAAOpiE,KAAKq/D,0BAAL,IAAA+C,OAAA,EAAAA,EAAyBnC,eAAzB,IAAAkC,EAAAA,EAAoC,CADhB,CAI7BvgD,aAAAA,GAME,OALA,EAAAza,EAAAwa,SACG3hB,KAAKq/D,mBACN,yDAEFr/D,KAAKq/D,mBAAqB,IAAIgD,EAAqBriE,MAC5CA,KAAKq/D,kBANE,CAShBt8C,cAAAA,CAAe3S,EAAOQ,GACpB,GAAIA,GAAO5Q,KAAK8/D,uBACd,OAAO,KAET,MAAM3lD,EAAS,IAAImoD,EAA0BtiE,KAAMoQ,EAAOQ,GAE1D,OADA5Q,KAAKkiE,qBAAqB9xE,KAAK+pB,GACxBA,CANkB,CAS3BsH,iBAAAA,CAAkB1a,GAAQ,IAAAw7D,EACxB,QAAAA,EAAAviE,KAAKq/D,0BAAL,IAAAkD,GAAAA,EAAyBtnD,OAAOlU,GAEhC,IAAK,MAAMoT,KAAUna,KAAKkiE,qBAAqB1+D,MAAM,GACnD2W,EAAOc,OAAOlU,EAJQ,GAU5B,MAAMs7D,EACJpiE,WAAAA,CAAYy6D,GACV16D,KAAK6gE,QAAUnG,EACf16D,KAAKwiE,QAAU,KACfxiE,KAAKigE,QAAU,EACfjgE,KAAK+gE,UAAY,KACjB,MAAMvyD,EAASksD,EAAOlsD,OACtBxO,KAAKyiE,iBAAmBj0D,EAAO1E,kBAAmB,EAClD9J,KAAKo/D,eAAiB5wD,EAAOnjB,OAC7B2U,KAAK0iE,mBAAqB,IAAIv7D,EAAAZ,kBAC9BvG,KAAK2iE,cAAgBn0D,EAAOpD,eAAgB,EAC5CpL,KAAK4iE,gBAAkBp0D,EAAOtE,eACzBlK,KAAK4iE,iBAAoB5iE,KAAK2iE,gBACjC3iE,KAAK2iE,eAAgB,GAGvB3iE,KAAK6iE,iBAAmB,IAAIC,gBAC5B9iE,KAAKk/D,uBAAyB1wD,EAAOnD,cACrCrL,KAAKm/D,mBAAqB3wD,EAAOpD,aAEjCpL,KAAK+iE,SAAWjB,EAAc9hE,KAAK6gE,QAAQh3D,aAE3C,MAAM3e,EAAMsjB,EAAOtjB,IACnBy5B,MACEz5B,EACAq2E,EACEvhE,KAAK+iE,SACL/iE,KAAKyiE,iBACLziE,KAAK6iE,mBAGN91D,MAAKuwB,IACJ,KAAK,EAAAgkC,EAAA0B,wBAAuB1lC,EAASr8B,QACnC,MAAM,EAAAqgE,EAAA2B,2BAA0B3lC,EAASr8B,OAAQ/V,GAEnD8U,KAAKwiE,QAAUllC,EAAS1zC,KAAKwwB,YAC7Bpa,KAAK0iE,mBAAmB/7D,UAExB,MAAMu8D,EAAoB18E,GACjB82C,EAASkkC,QAAQ7yE,IAAInI,IAExB,mBAAE28E,EAAF,gBAAsBC,IAC1B,EAAA9B,EAAA+B,kCAAiC,CAC/BH,oBACAjB,OAAQjiE,KAAK6gE,QAAQoB,OACrB/3D,eAAgBlK,KAAK4iE,gBACrBx3D,aAAcpL,KAAK2iE,gBAGvB3iE,KAAKm/D,kBAAoBgE,EAEzBnjE,KAAKo/D,eAAiBgE,GAAmBpjE,KAAKo/D,eAE9Cp/D,KAAK+gE,WAAY,EAAAO,EAAAgC,2BAA0BJ,IAItCljE,KAAKk/D,uBAAyBl/D,KAAKm/D,mBACtCn/D,KAAKib,OAAO,IAAI9T,EAAAhG,eAAe,0BAD0B,IAI5DkN,MAAMrO,KAAK0iE,mBAAmB97D,QAEjC5G,KAAKmP,WAAa,IA9DA,CAiEpB,gBAAIqT,GACF,OAAOxiB,KAAK0iE,mBAAmBj8D,OADd,CAInB,YAAIqe,GACF,OAAO9kB,KAAK+gE,SADC,CAIf,iBAAIl+C,GACF,OAAO7iB,KAAKo/D,cADM,CAIpB,oBAAIz8C,GACF,OAAO3iB,KAAKm/D,iBADS,CAIvB,wBAAIz8C,GACF,OAAO1iB,KAAKk/D,qBADa,CAI3B,UAAM3kD,GAAO,IAAAgpD,QACLvjE,KAAK0iE,mBAAmBj8D,QAC9B,MAAM,MAAExX,EAAF,KAASwrB,SAAeza,KAAKwiE,QAAQjoD,OAC3C,OAAIE,EACK,CAAExrB,QAAOwrB,SAElBza,KAAKigE,SAAWhxE,EAAMnB,WACtB,QAAAy1E,EAAAvjE,KAAKmP,kBAAL,IAAAo0D,GAAAA,EAAAlhE,KAAArC,KAAkB,CAChBsQ,OAAQtQ,KAAKigE,QACb1vD,MAAOvQ,KAAKo/D,iBAGP,CAAEnwE,MAAO+yE,EAAe/yE,GAAQwrB,MAAM,GAZlC,CAebQ,MAAAA,CAAOlU,GAAQ,IAAAy8D,EACb,QAAAA,EAAAxjE,KAAKwiE,eAAL,IAAAgB,GAAAA,EAAcvoD,OAAOlU,GACrB/G,KAAK6iE,iBAAiBhyD,OAFT,EAOjB,MAAMyxD,EACJriE,WAAAA,CAAYy6D,EAAQtqD,EAAOQ,GACzB5Q,KAAK6gE,QAAUnG,EACf16D,KAAKwiE,QAAU,KACfxiE,KAAKigE,QAAU,EACf,MAAMzxD,EAASksD,EAAOlsD,OACtBxO,KAAKyiE,iBAAmBj0D,EAAO1E,kBAAmB,EAClD9J,KAAKyjE,gBAAkB,IAAIt8D,EAAAZ,kBAC3BvG,KAAKk/D,uBAAyB1wD,EAAOnD,cAErCrL,KAAK6iE,iBAAmB,IAAIC,gBAC5B9iE,KAAK+iE,SAAWjB,EAAc9hE,KAAK6gE,QAAQh3D,aAC3C7J,KAAK+iE,SAAS5vC,OAAO,QAArB,SAAAxnC,OAAuCykB,EAAM,KAAAzkB,OAAGilB,EAAM,IAEtD,MAAM1lB,EAAMsjB,EAAOtjB,IACnBy5B,MACEz5B,EACAq2E,EACEvhE,KAAK+iE,SACL/iE,KAAKyiE,iBACLziE,KAAK6iE,mBAGN91D,MAAKuwB,IACJ,KAAK,EAAAgkC,EAAA0B,wBAAuB1lC,EAASr8B,QACnC,MAAM,EAAAqgE,EAAA2B,2BAA0B3lC,EAASr8B,OAAQ/V,GAEnD8U,KAAKyjE,gBAAgB98D,UACrB3G,KAAKwiE,QAAUllC,EAAS1zC,KAAKwwB,WAA7B,IAED/L,MAAMrO,KAAKyjE,gBAAgB78D,QAE9B5G,KAAKmP,WAAa,IA/BY,CAkChC,wBAAIuT,GACF,OAAO1iB,KAAKk/D,qBADa,CAI3B,UAAM3kD,GAAO,IAAAmpD,QACL1jE,KAAKyjE,gBAAgBh9D,QAC3B,MAAM,MAAExX,EAAF,KAASwrB,SAAeza,KAAKwiE,QAAQjoD,OAC3C,OAAIE,EACK,CAAExrB,QAAOwrB,SAElBza,KAAKigE,SAAWhxE,EAAMnB,WACtB,QAAA41E,EAAA1jE,KAAKmP,kBAAL,IAAAu0D,GAAAA,EAAArhE,KAAArC,KAAkB,CAAEsQ,OAAQtQ,KAAKigE,UAE1B,CAAEhxE,MAAO+yE,EAAe/yE,GAAQwrB,MAAM,GATlC,CAYbQ,MAAAA,CAAOlU,GAAQ,IAAA48D,EACb,QAAAA,EAAA3jE,KAAKwiE,eAAL,IAAAmB,GAAAA,EAAc1oD,OAAOlU,GACrB/G,KAAK6iE,iBAAiBhyD,OAFT,2FCzLjB,SAAmC5P,EAAQ/V,GACzC,OAAe,MAAX+V,GAA8B,IAAXA,GAAgB/V,EAAIM,WAAW,SAC7C,IAAI2b,EAAApG,oBAAoB,gBAAkB7V,EAAM,MAElD,IAAIic,EAAAnG,4BAAJ,+BAAArV,OAC0BsV,EAAO,4BAAAtV,OAA0BT,EAAI,MACpE+V,EAN4C,8BAhBhD,SAAmCiiE,GACjC,MAAMU,EAAqBV,EAAkB,uBAC7C,GAAIU,EAAoB,CACtB,IAAI9+C,GAAW,EAAA++C,EAAAC,yCAAwCF,GACvD,GAAI9+C,EAAS/iB,SAAS,KACpB,IACE+iB,EAAW3e,mBAAmB2e,EAD5B,CAEF,MAAO,CAEX,IAAI,EAAAxd,EAAA05D,WAAUl8C,GACZ,OAAOA,CARa,CAWxB,OAAO,IAb6C,qCA9CtD,SAAAi/C,GAKG,IALuC,kBACxCb,EADwC,OAExCjB,EAFwC,eAGxC/3D,EAHwC,aAIxCkB,GAJF24D,EAYE,MAAMC,EAAe,CACnBb,oBAAoB,EACpBC,qBAAiB93E,GAGbD,EAASw/C,SAASq4B,EAAkB,kBAAmB,IAC7D,OAAK9zE,OAAOC,UAAUhE,IAItB24E,EAAaZ,gBAAkB/3E,EAE3BA,GAAU,EAAI6e,GAMdkB,IAAiB62D,GAGsB,UAAvCiB,EAAkB,kBAKE,cADAA,EAAkB,qBAAuB,cAKjEc,EAAab,oBAAqB,GAfzBa,GARAA,CAdR,2BAmEH,SAAgC/iE,GAC9B,OAAkB,MAAXA,GAA6B,MAAXA,CADa,EAhFxC,IAAAkG,EAAAC,EAAA,GAKAy8D,EAAAz8D,EAAA,IACAE,EAAAF,EAAA,yGCSA,SAAiDw8D,GAC/C,IAAIK,GAAqB,EAGrBpP,EAAMqP,EAAc,cAAe,KAAKzkC,KAAKmkC,GACjD,GAAI/O,EAAK,CACPA,EAAMA,EAAI,GACV,IAAI/vC,EAAWq/C,EAAetP,GAI9B,OAHA/vC,EAAWz0B,SAASy0B,GACpBA,EAAWs/C,EAAct/C,GACzBA,EAAWu/C,EAAcv/C,GAClBw/C,EAAcx/C,EANd,CAaT,GADA+vC,EA6DA,SAAyB0P,GACvB,MAAM/jC,EAAU,GAChB,IAAI90C,EAGJ,MAAM84E,EAAON,EAAc,kCAAmC,MAC9D,KAAsD,QAA9Cx4E,EAAQ84E,EAAK/kC,KAAK8kC,KAAkC,CAC1D,IAAK,CAAEhiE,EAAGkiE,EAAMC,GAAQh5E,EAExB,GADA6W,EAAIsoC,SAAStoC,EAAG,IACZA,KAAKi+B,GAEP,GAAU,IAANj+B,EACF,WAIJi+B,EAAQj+B,GAAK,CAACkiE,EAAMC,EAVsC,CAY5D,MAAMC,EAAQ,GACd,IAAK,IAAIpiE,EAAI,EAAGA,EAAIi+B,EAAQn1C,QACpBkX,KAAKi+B,IADyBj+B,EAAG,CAKvC,IAAKkiE,EAAMC,GAAQlkC,EAAQj+B,GAC3BmiE,EAAOP,EAAeO,GAClBD,IACFC,EAAOr0E,SAASq0E,GACN,IAANniE,IACFmiE,EAAON,EAAcM,KAGzBC,EAAMv0E,KAAKs0E,EAb4B,CAezC,OAAOC,EAAM/3E,KAAK,GAlC4B,CA7D1Cg4E,CAAgBhB,GAClB/O,EAGF,OAAOyP,EADUD,EAAcxP,IAMjC,GADAA,EAAMqP,EAAc,WAAY,KAAKzkC,KAAKmkC,GACtC/O,EAAK,CACPA,EAAMA,EAAI,GACV,IAAI/vC,EAAWq/C,EAAetP,GAE9B,OADA/vC,EAAWu/C,EAAcv/C,GAClBw/C,EAAcx/C,EAJd,CAUT,SAASo/C,EAAcW,EAAkBC,GACvC,OAAO,IAAI/xB,OACT,cACE8xB,EADF,sDAUAC,EAZ4C,CAehD,SAASC,EAAWv1E,EAAUP,GAC5B,GAAIO,EAAU,CACZ,IAAK,iBAAiBnF,KAAK4E,GACzB,OAAOA,EAET,IACE,MAAMQ,EAAU,IAAIC,YAAYF,EAAU,CAAEG,OAAO,IAC7CC,GAAS,EAAAuX,EAAAtX,eAAcZ,GAC7BA,EAAQQ,EAAQK,OAAOF,GACvBq0E,GAAqB,CAJnB,CAKF,MAAO,CATG,CAad,OAAOh1E,CAd4B,CAgBrC,SAASq1E,EAAcr1E,GASrB,OARIg1E,GAAsB,cAAc55E,KAAK4E,KAE3CA,EAAQ81E,EAAW,QAAS91E,GACxBg1E,IAEFh1E,EAAQ81E,EAAW,aAAc91E,KAG9BA,CATqB,CA+C9B,SAASk1E,EAAel1E,GACtB,GAAIA,EAAMzD,WAAW,KAAM,CACzB,MAAMm5E,EAAQ11E,EAAMuU,MAAM,GAAGld,MAAM,OAEnC,IAAK,IAAI8G,EAAI,EAAGA,EAAIu3E,EAAMt5E,SAAU+B,EAAG,CACrC,MAAM43E,EAAYL,EAAMv3E,GAAGozE,QAAQ,MAChB,IAAfwE,IACFL,EAAMv3E,GAAKu3E,EAAMv3E,GAAGoW,MAAM,EAAGwhE,GAC7BL,EAAMt5E,OAAS+B,EAAI,GAErBu3E,EAAMv3E,GAAKu3E,EAAMv3E,GAAGkB,WAAW,SAAU,KANJ,CAQvCW,EAAQ01E,EAAM/3E,KAAK,IAXM,CAa3B,OAAOqC,CAdsB,CAgB/B,SAASm1E,EAAca,GAErB,MAAMC,EAAcD,EAASzE,QAAQ,KACrC,OAAqB,IAAjB0E,EAIKD,EAMFF,EAJUE,EAASzhE,MAAM,EAAG0hE,GACjBD,EAASzhE,MAAM0hE,EAAc,GAEvBr+E,QAAQ,UAAW,IAZZ,CAejC,SAASw9E,EAAcp1E,GAWrB,OAAKA,EAAMzD,WAAW,OAAS,uBAAuBnB,KAAK4E,GAClDA,EASFA,EAAMX,WACX,kDACA,SAAUkyC,EAAS2kC,EAAS31E,EAAUjI,GACpC,GAAiB,MAAbiI,GAAiC,MAAbA,EAMtB,OAAOu1E,EAAWI,EAHlB59E,GADAA,EAAOA,EAAK+G,WAAW,IAAK,MAChBA,WAAW,sBAAsB,SAAU5C,EAAO05E,GAC5D,OAAO91E,OAAOC,aAAas7C,SAASu6B,EAAK,IADwB,KAKrE,IACE79E,EAAO8vD,KAAK9vD,EADV,CAEF,MAAO,CACT,OAAOw9E,EAAWI,EAAS59E,EAZe,GAvBlB,CAwC9B,MAAO,EAzL4D,EAfrE,IAAA4f,EAAAC,EAAA,yFCAA,IAAAD,EAAAC,EAAA,GACAk6D,EAAAl6D,EAAA,IAuBA,MAAMi+D,EACJplE,WAAAA,CAAY/U,GAAgB,IAAX20C,EAAAz0C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAO,CAAC,EACvB4U,KAAK9U,IAAMA,EACX8U,KAAKiiE,OAAS,YAAY53E,KAAKa,GAC/B8U,KAAK6J,YAAe7J,KAAKiiE,QAAUpiC,EAAKh2B,aAAgB/a,OAAOC,OAAO,MACtEiR,KAAK8J,gBAAkB+1B,EAAK/1B,kBAAmB,EAE/C9J,KAAKslE,UAAY,EACjBtlE,KAAKulE,gBAAkBz2E,OAAOC,OAAO,KAPX,CAU5By2E,YAAAA,CAAap1D,EAAOQ,EAAK60D,GACvB,MAAM5lC,EAAO,CACXzvB,QACAQ,OAEF,IAAK,MAAMnR,KAAQgmE,EACjB5lC,EAAKpgC,GAAQgmE,EAAUhmE,GAEzB,OAAOO,KAAKswC,QAAQzQ,EARc,CAWpC6lC,WAAAA,CAAYD,GACV,OAAOzlE,KAAKswC,QAAQm1B,EADC,CAIvBn1B,OAAAA,CAAQzQ,GACN,MAAM8lC,EAAM,IAAIp1B,eACVq1B,EAAQ5lE,KAAKslE,YACbO,EAAkB7lE,KAAKulE,gBAAgBK,GAAS,CAAED,OAExDA,EAAIn1B,KAAK,MAAOxwC,KAAK9U,KACrBy6E,EAAI77D,gBAAkB9J,KAAK8J,gBAC3B,IAAK,MAAMk2C,KAAYhgD,KAAK6J,YAAa,CACvC,MAAM5a,EAAQ+Q,KAAK6J,YAAYm2C,QACjB10D,IAAV2D,GAGJ02E,EAAIG,iBAAiB9lB,EAAU/wD,EALQ,CA8BzC,OAvBI+Q,KAAKiiE,QAAU,UAAWpiC,GAAQ,QAASA,GAC7C8lC,EAAIG,iBAAiB,QAArB,SAAAn6E,OAAuCk0C,EAAKzvB,MAAM,KAAAzkB,OAAGk0C,EAAKjvB,IAAM,IAChEi1D,EAAeE,eApDY,KAsD3BF,EAAeE,eAvDD,IAyDhBJ,EAAIl1B,aAAe,cAEf5Q,EAAKmmC,UACPL,EAAI1nC,QAAU,SAAUpc,GACtBge,EAAKmmC,QAAQL,EAAI1kE,OADU,GAI/B0kE,EAAIj1B,mBAAqB1wC,KAAKimE,cAAchiD,KAAKjkB,KAAM4lE,GACvDD,EAAIO,WAAalmE,KAAKmP,WAAW8U,KAAKjkB,KAAM4lE,GAE5CC,EAAeM,kBAAoBtmC,EAAKsmC,kBACxCN,EAAeO,OAASvmC,EAAKumC,OAC7BP,EAAeG,QAAUnmC,EAAKmmC,QAC9BH,EAAe12D,WAAa0wB,EAAK1wB,WAEjCw2D,EAAIv3D,KAAK,MAEFw3D,CArCK,CAwCdz2D,UAAAA,CAAWy2D,EAAO/jD,GAAK,IAAAwkD,EACrB,MAAMR,EAAiB7lE,KAAKulE,gBAAgBK,GACvCC,IAGL,QAAAQ,EAAAR,EAAe12D,kBAAf,IAAAk3D,GAAAA,EAAAhkE,KAAAwjE,EAA4BhkD,GALP,CAQvBokD,aAAAA,CAAcL,EAAO/jD,GACnB,MAAMgkD,EAAiB7lE,KAAKulE,gBAAgBK,GAC5C,IAAKC,EACH,OAGF,MAAMF,EAAME,EAAeF,IAM3B,GALIA,EAAIh1B,YAAc,GAAKk1B,EAAeM,oBACxCN,EAAeM,2BACRN,EAAeM,mBAGD,IAAnBR,EAAIh1B,WACN,OAGF,KAAMi1B,KAAS5lE,KAAKulE,iBAGlB,OAMmC,IAAAe,EAArC,UAHOtmE,KAAKulE,gBAAgBK,GAGT,IAAfD,EAAI1kE,QAAgBjB,KAAKiiE,OAE3B,YADA,QAAAqE,EAAAT,EAAeG,eAAf,IAAAM,GAAAA,EAAAjkE,KAAAwjE,EAAyBF,EAAI1kE,SAG/B,MAAMslE,EAAYZ,EAAI1kE,QAlHN,IA8Hd,IAAAulE,EAHF,IA3HgB,MAwHdD,GAvH2B,MAwH3BV,EAAeE,iBAIfQ,IAAcV,EAAeE,eAG7B,YADA,QAAAS,EAAAX,EAAeG,eAAf,IAAAQ,GAAAA,EAAAnkE,KAAAwjE,EAAyBF,EAAI1kE,SAI/B,MAAMT,EAhIV,SAAwBmlE,GACtB,MAAM9+D,EAAO8+D,EAAIroC,SACjB,MAAoB,kBAATz2B,EACFA,GAEF,EAAAM,EAAAtX,eAAcgX,GAAMjX,MALA,CAgIXoyE,CAAe2D,GAC7B,GAnI6B,MAmIzBY,EAAwC,CAC1C,MAAME,EAAcd,EAAIzC,kBAAkB,iBACpC1iC,EAAU,2BAA2Bf,KAAKgnC,GAChDZ,EAAeO,OAAO,CACpBh2D,MAAOy6B,SAASrK,EAAQ,GAAI,IAC5BhgC,SALwC,MAOrC,GAAIA,EACTqlE,EAAeO,OAAO,CACpBh2D,MAAO,EACP5P,cAEG,KAAAkmE,EACL,QAAAA,EAAAb,EAAeG,eAAf,IAAAU,GAAAA,EAAArkE,KAAAwjE,EAAyBF,EAAI1kE,OADxB,CA3DiB,CAgE1B0lE,aAAAA,CAAcf,GACZ,OAAO5lE,KAAKulE,gBAAgBK,GAAOD,GADhB,CAIrBiB,gBAAAA,CAAiBhB,GACf,OAAOA,KAAS5lE,KAAKulE,eADC,CAIxBsB,YAAAA,CAAajB,GACX,MAAMD,EAAM3lE,KAAKulE,gBAAgBK,GAAOD,WACjC3lE,KAAKulE,gBAAgBK,GAC5BD,EAAI90D,OAHc,EAzLtB7qB,EAAA4nB,iBAiMA,MACE3N,WAAAA,CAAYuO,GACVxO,KAAK8mE,QAAUt4D,EACfxO,KAAK+mE,SAAW,IAAI1B,EAAe72D,EAAOtjB,IAAK,CAC7C2e,YAAa2E,EAAO3E,YACpBC,gBAAiB0E,EAAO1E,kBAE1B9J,KAAK4iE,gBAAkBp0D,EAAOtE,eAC9BlK,KAAKq/D,mBAAqB,KAC1Br/D,KAAKkiE,qBAAuB,EARV,CAWpB8E,2BAAAA,CAA4B7sD,GAC1B,MAAM/sB,EAAI4S,KAAKkiE,qBAAqB1B,QAAQrmD,GACxC/sB,GAAK,GACP4S,KAAKkiE,qBAAqBnjC,OAAO3xC,EAAG,EAHJ,CAOpCw0B,aAAAA,GASE,OARA,EAAAza,EAAAwa,SACG3hB,KAAKq/D,mBACN,2DAEFr/D,KAAKq/D,mBAAqB,IAAI4H,EAC5BjnE,KAAK+mE,SACL/mE,KAAK8mE,SAEA9mE,KAAKq/D,kBATE,CAYhBt8C,cAAAA,CAAe3S,EAAOQ,GACpB,MAAMuJ,EAAS,IAAI+sD,EACjBlnE,KAAK+mE,SACL32D,EACAQ,GAIF,OAFAuJ,EAAOgtD,SAAWnnE,KAAKgnE,4BAA4B/iD,KAAKjkB,MACxDA,KAAKkiE,qBAAqB9xE,KAAK+pB,GACxBA,CARkB,CAW3BsH,iBAAAA,CAAkB1a,GAAQ,IAAAqgE,EACxB,QAAAA,EAAApnE,KAAKq/D,0BAAL,IAAA+H,GAAAA,EAAyBnsD,OAAOlU,GAEhC,IAAK,MAAMoT,KAAUna,KAAKkiE,qBAAqB1+D,MAAM,GACnD2W,EAAOc,OAAOlU,EAJQ,GAU5B,MAAMkgE,EACJhnE,WAAAA,CAAYonE,EAAS74D,GACnBxO,KAAK+mE,SAAWM,EAEhB,MAAMxnC,EAAO,CACXsmC,kBAAmBnmE,KAAKsnE,mBAAmBrjD,KAAKjkB,MAChDomE,OAAQpmE,KAAKunE,QAAQtjD,KAAKjkB,MAC1BgmE,QAAShmE,KAAKwnE,SAASvjD,KAAKjkB,MAC5BmP,WAAYnP,KAAKw/D,YAAYv7C,KAAKjkB,OAEpCA,KAAKynE,KAAOj5D,EAAOtjB,IACnB8U,KAAK0nE,eAAiBL,EAAQ3B,YAAY7lC,GAC1C7/B,KAAK2nE,2BAA6B,IAAIxgE,EAAAZ,kBACtCvG,KAAK2iE,cAAgBn0D,EAAOpD,eAAgB,EAC5CpL,KAAKo/D,eAAiB5wD,EAAOnjB,OAC7B2U,KAAK4iE,gBAAkBp0D,EAAOtE,eACzBlK,KAAK4iE,iBAAoB5iE,KAAK2iE,gBACjC3iE,KAAK2iE,eAAgB,GAGvB3iE,KAAKk/D,uBAAwB,EAC7Bl/D,KAAKm/D,mBAAoB,EAEzBn/D,KAAK4nE,cAAgB,GACrB5nE,KAAKihE,UAAY,GACjBjhE,KAAK8gE,OAAQ,EACb9gE,KAAK6nE,kBAAev8E,EACpB0U,KAAK+gE,UAAY,KAEjB/gE,KAAKmP,WAAa,IA5BS,CA+B7Bm4D,kBAAAA,GACE,MAAMQ,EAAmB9nE,KAAK0nE,eACxBK,EAAiB/nE,KAAK+mE,SAASJ,cAAcmB,GAE7C5E,EAAoB18E,GACjBuhF,EAAe7E,kBAAkB18E,IAEpC,mBAAE28E,EAAF,gBAAsBC,IAC1B,EAAA9B,EAAA+B,kCAAiC,CAC/BH,oBACAjB,OAAQjiE,KAAK+mE,SAAS9E,OACtB/3D,eAAgBlK,KAAK4iE,gBACrBx3D,aAAcpL,KAAK2iE,gBAGnBQ,IACFnjE,KAAKm/D,mBAAoB,GAG3Bn/D,KAAKo/D,eAAiBgE,GAAmBpjE,KAAKo/D,eAE9Cp/D,KAAK+gE,WAAY,EAAAO,EAAAgC,2BAA0BJ,GAEvCljE,KAAKm/D,mBAKPn/D,KAAK+mE,SAASF,aAAaiB,GAG7B9nE,KAAK2nE,2BAA2BhhE,SA/Bb,CAkCrB4gE,OAAAA,CAAQ1gE,GAUN,GATIA,IACE7G,KAAKihE,UAAU51E,OAAS,EACA2U,KAAKihE,UAAU/pB,QACvBvwC,QAAQ,CAAE1X,MAAO4X,EAAKrG,MAAOia,MAAM,IAErDza,KAAK4nE,cAAcx3E,KAAKyW,EAAKrG,QAGjCR,KAAK8gE,OAAQ,IACT9gE,KAAK4nE,cAAcv8E,OAAS,GAAhC,CAGA,IAAK,MAAM81E,KAAqBnhE,KAAKihE,UACnCE,EAAkBx6D,QAAQ,CAAE1X,WAAO3D,EAAWmvB,MAAM,IAEtDza,KAAKihE,UAAU51E,OAAS,CANW,CAVvB,CAmBdm8E,QAAAA,CAASvmE,GACPjB,KAAK6nE,cAAe,EAAAvG,EAAA2B,2BAA0BhiE,EAAQjB,KAAKynE,MAC3DznE,KAAK2nE,2BAA2B/gE,OAAO5G,KAAK6nE,cAC5C,IAAK,MAAM1G,KAAqBnhE,KAAKihE,UACnCE,EAAkBv6D,OAAO5G,KAAK6nE,cAEhC7nE,KAAKihE,UAAU51E,OAAS,EACxB2U,KAAK4nE,cAAcv8E,OAAS,CAPb,CAUjBm0E,WAAAA,CAAY39C,GAAK,IAAAmmD,EACf,QAAAA,EAAAhoE,KAAKmP,kBAAL,IAAA64D,GAAAA,EAAA3lE,KAAArC,KAAkB,CAChBsQ,OAAQuR,EAAIvR,OACZC,MAAOsR,EAAIomD,iBAAmBpmD,EAAItR,MAAQvQ,KAAKo/D,gBAHlC,CAOjB,YAAIt6C,GACF,OAAO9kB,KAAK+gE,SADC,CAIf,oBAAIp+C,GACF,OAAO3iB,KAAKm/D,iBADS,CAIvB,wBAAIz8C,GACF,OAAO1iB,KAAKk/D,qBADa,CAI3B,iBAAIr8C,GACF,OAAO7iB,KAAKo/D,cADM,CAIpB,gBAAI58C,GACF,OAAOxiB,KAAK2nE,2BAA2BlhE,OADtB,CAInB,UAAM8T,GACJ,GAAIva,KAAK6nE,aACP,MAAM7nE,KAAK6nE,aAEb,GAAI7nE,KAAK4nE,cAAcv8E,OAAS,EAE9B,MAAO,CAAE4D,MADK+Q,KAAK4nE,cAAc1wB,QACVz8B,MAAM,GAE/B,GAAIza,KAAK8gE,MACP,MAAO,CAAE7xE,WAAO3D,EAAWmvB,MAAM,GAEnC,MAAM0mD,EAAoB,IAAIh6D,EAAAZ,kBAE9B,OADAvG,KAAKihE,UAAU7wE,KAAK+wE,GACbA,EAAkB16D,OAbd,CAgBbwU,MAAAA,CAAOlU,GACL/G,KAAK8gE,OAAQ,EACb9gE,KAAK2nE,2BAA2B/gE,OAAOG,GACvC,IAAK,MAAMo6D,KAAqBnhE,KAAKihE,UACnCE,EAAkBx6D,QAAQ,CAAE1X,WAAO3D,EAAWmvB,MAAM,IAEtDza,KAAKihE,UAAU51E,OAAS,EACpB2U,KAAK+mE,SAASH,iBAAiB5mE,KAAK0nE,iBACtC1nE,KAAK+mE,SAASF,aAAa7mE,KAAK0nE,gBAElC1nE,KAAKq/D,mBAAqB,IAVb,EAejB,MAAM6H,EACJjnE,WAAAA,CAAYonE,EAASj3D,EAAOQ,GAC1B5Q,KAAK+mE,SAAWM,EAEhB,MAAMxnC,EAAO,CACXumC,OAAQpmE,KAAKunE,QAAQtjD,KAAKjkB,MAC1BgmE,QAAShmE,KAAKwnE,SAASvjD,KAAKjkB,MAC5BmP,WAAYnP,KAAKw/D,YAAYv7C,KAAKjkB,OAEpCA,KAAKynE,KAAOJ,EAAQn8E,IACpB8U,KAAKkoE,WAAab,EAAQ7B,aAAap1D,EAAOQ,EAAKivB,GACnD7/B,KAAKihE,UAAY,GACjBjhE,KAAKqhE,aAAe,KACpBrhE,KAAK8gE,OAAQ,EACb9gE,KAAK6nE,kBAAev8E,EAEpB0U,KAAKmP,WAAa,KAClBnP,KAAKmnE,SAAW,IAhBe,CAmBjCgB,MAAAA,GAAS,IAAAC,EACP,QAAAA,EAAApoE,KAAKmnE,gBAAL,IAAAiB,GAAAA,EAAA/lE,KAAArC,KAAgBA,KADT,CAITunE,OAAAA,CAAQ1gE,GACN,MAAMrG,EAAQqG,EAAKrG,MACfR,KAAKihE,UAAU51E,OAAS,EACA2U,KAAKihE,UAAU/pB,QACvBvwC,QAAQ,CAAE1X,MAAOuR,EAAOia,MAAM,IAEhDza,KAAKqhE,aAAe7gE,EAEtBR,KAAK8gE,OAAQ,EACb,IAAK,MAAMK,KAAqBnhE,KAAKihE,UACnCE,EAAkBx6D,QAAQ,CAAE1X,WAAO3D,EAAWmvB,MAAM,IAEtDza,KAAKihE,UAAU51E,OAAS,EACxB2U,KAAKmoE,QAbO,CAgBdX,QAAAA,CAASvmE,GACPjB,KAAK6nE,cAAe,EAAAvG,EAAA2B,2BAA0BhiE,EAAQjB,KAAKynE,MAC3D,IAAK,MAAMtG,KAAqBnhE,KAAKihE,UACnCE,EAAkBv6D,OAAO5G,KAAK6nE,cAEhC7nE,KAAKihE,UAAU51E,OAAS,EACxB2U,KAAKqhE,aAAe,IANL,CASjB7B,WAAAA,CAAY39C,GACsB,IAAAwmD,EAA3BroE,KAAK0iB,sBACR,QAAA2lD,EAAAroE,KAAKmP,kBAAL,IAAAk5D,GAAAA,EAAAhmE,KAAArC,KAAkB,CAAEsQ,OAAQuR,EAAIvR,QAFnB,CAMjB,wBAAIoS,GACF,OAAO,CADkB,CAI3B,UAAMnI,GACJ,GAAIva,KAAK6nE,aACP,MAAM7nE,KAAK6nE,aAEb,GAA0B,OAAtB7nE,KAAKqhE,aAAuB,CAC9B,MAAM7gE,EAAQR,KAAKqhE,aAEnB,OADArhE,KAAKqhE,aAAe,KACb,CAAEpyE,MAAOuR,EAAOia,MAAM,EAHC,CAKhC,GAAIza,KAAK8gE,MACP,MAAO,CAAE7xE,WAAO3D,EAAWmvB,MAAM,GAEnC,MAAM0mD,EAAoB,IAAIh6D,EAAAZ,kBAE9B,OADAvG,KAAKihE,UAAU7wE,KAAK+wE,GACbA,EAAkB16D,OAdd,CAiBbwU,MAAAA,CAAOlU,GACL/G,KAAK8gE,OAAQ,EACb,IAAK,MAAMK,KAAqBnhE,KAAKihE,UACnCE,EAAkBx6D,QAAQ,CAAE1X,WAAO3D,EAAWmvB,MAAM,IAEtDza,KAAKihE,UAAU51E,OAAS,EACpB2U,KAAK+mE,SAASH,iBAAiB5mE,KAAKkoE,aACtCloE,KAAK+mE,SAASF,aAAa7mE,KAAKkoE,YAElCloE,KAAKmoE,QATQ,sFC1cjB,IAAAhhE,EAAAC,EAAA,GAMAk6D,EAAAl6D,EAAA,IAWA,MAAMkhE,EAAe,0BAjCrBtiF,EAAA0nB,cAoDA,MACEzN,WAAAA,CAAYuO,GACVxO,KAAKwO,OAASA,EACdxO,KAAK9U,IApBT,SAAkBq9E,GAChB,MAAMr9E,EAAM9D,oBAAwB,OAC9BohF,EAAYt9E,EAAIy7C,MAAM4hC,GAC5B,MAA2B,UAAvBC,EAAUx8E,UAAwBw8E,EAAUC,KACvCD,EAGL,gBAAgBn+E,KAAKk+E,GAChBr9E,EAAIy7C,MAAJ,WAAAh7C,OAAqB48E,KAGzBC,EAAUC,OACbD,EAAUx8E,SAAW,SAEhBw8E,EAdoB,CAoBdE,CAASl6D,EAAOtjB,KAC3B8U,KAAKiiE,OACmB,UAAtBjiE,KAAK9U,IAAIc,UAA8C,WAAtBgU,KAAK9U,IAAIc,SAE5CgU,KAAK2oE,QAAgC,UAAtB3oE,KAAK9U,IAAIc,SACxBgU,KAAK6J,YAAe7J,KAAKiiE,QAAUzzD,EAAO3E,aAAgB,CAAC,EAE3D7J,KAAKq/D,mBAAqB,KAC1Br/D,KAAKkiE,qBAAuB,EAVV,CAapB,0BAAIpC,GAAyB,IAAA8I,EAAAC,EAC3B,OAAO,QAAPD,EAAO,QAAPC,EAAO7oE,KAAKq/D,0BAAL,IAAAwJ,OAAA,EAAAA,EAAyB5I,eAAzB,IAAA2I,EAAAA,EAAoC,CADhB,CAI7BhnD,aAAAA,GAQE,OAPA,EAAAza,EAAAwa,SACG3hB,KAAKq/D,mBACN,wDAEFr/D,KAAKq/D,mBAAqBr/D,KAAK2oE,QAC3B,IAAIG,EAA0B9oE,MAC9B,IAAI+oE,EAAwB/oE,MACzBA,KAAKq/D,kBARE,CAWhBt8C,cAAAA,CAAeorB,EAAOv9B,GACpB,GAAIA,GAAO5Q,KAAK8/D,uBACd,OAAO,KAET,MAAMh9C,EAAc9iB,KAAK2oE,QACrB,IAAIK,EAA2BhpE,KAAMmuC,EAAOv9B,GAC5C,IAAIq4D,EAAyBjpE,KAAMmuC,EAAOv9B,GAE9C,OADA5Q,KAAKkiE,qBAAqB9xE,KAAK0yB,GACxBA,CARkB,CAW3BrB,iBAAAA,CAAkB1a,GAAQ,IAAAmiE,EACxB,QAAAA,EAAAlpE,KAAKq/D,0BAAL,IAAA6J,GAAAA,EAAyBjuD,OAAOlU,GAEhC,IAAK,MAAMoT,KAAUna,KAAKkiE,qBAAqB1+D,MAAM,GACnD2W,EAAOc,OAAOlU,EAJQ,GAS5B,MAAMoiE,EACJlpE,WAAAA,CAAYy6D,GACV16D,KAAKynE,KAAO/M,EAAOxvE,IACnB8U,KAAK8gE,OAAQ,EACb9gE,KAAK6nE,aAAe,KACpB7nE,KAAKmP,WAAa,KAClB,MAAMX,EAASksD,EAAOlsD,OACtBxO,KAAKo/D,eAAiB5wD,EAAOnjB,OAC7B2U,KAAKigE,QAAU,EACfjgE,KAAK+gE,UAAY,KAEjB/gE,KAAK2iE,cAAgBn0D,EAAOpD,eAAgB,EAC5CpL,KAAK4iE,gBAAkBp0D,EAAOtE,eACzBlK,KAAK4iE,iBAAoB5iE,KAAK2iE,gBACjC3iE,KAAK2iE,eAAgB,GAGvB3iE,KAAKk/D,uBAAyB1wD,EAAOnD,cACrCrL,KAAKm/D,mBAAqB3wD,EAAOpD,aAEjCpL,KAAKopE,gBAAkB,KACvBppE,KAAKyjE,gBAAkB,IAAIt8D,EAAAZ,kBAC3BvG,KAAK0iE,mBAAqB,IAAIv7D,EAAAZ,iBArBZ,CAwBpB,gBAAIic,GACF,OAAOxiB,KAAK0iE,mBAAmBj8D,OADd,CAInB,YAAIqe,GACF,OAAO9kB,KAAK+gE,SADC,CAIf,iBAAIl+C,GACF,OAAO7iB,KAAKo/D,cADM,CAIpB,oBAAIz8C,GACF,OAAO3iB,KAAKm/D,iBADS,CAIvB,wBAAIz8C,GACF,OAAO1iB,KAAKk/D,qBADa,CAI3B,UAAM3kD,GAAO,IAAA8uD,EAEX,SADMrpE,KAAKyjE,gBAAgBh9D,QACvBzG,KAAK8gE,MACP,MAAO,CAAE7xE,WAAO3D,EAAWmvB,MAAM,GAEnC,GAAIza,KAAK6nE,aACP,MAAM7nE,KAAK6nE,aAGb,MAAMrnE,EAAQR,KAAKopE,gBAAgB7uD,OACnC,OAAc,OAAV/Z,GACFR,KAAKyjE,gBAAkB,IAAIt8D,EAAAZ,kBACpBvG,KAAKua,SAEdva,KAAKigE,SAAWz/D,EAAMnV,OACtB,QAAAg+E,EAAArpE,KAAKmP,kBAAL,IAAAk6D,GAAAA,EAAAhnE,KAAArC,KAAkB,CAChBsQ,OAAQtQ,KAAKigE,QACb1vD,MAAOvQ,KAAKo/D,iBAKP,CAAEnwE,MADM,IAAI/B,WAAWsT,GAAO5Q,OACb6qB,MAAM,GAtBnB,CAyBbQ,MAAAA,CAAOlU,GAGA/G,KAAKopE,gBAIVppE,KAAKopE,gBAAgBh6D,QAAQrI,GAH3B/G,KAAKspE,OAAOviE,EAJD,CAUfuiE,MAAAA,CAAOviE,GACL/G,KAAK6nE,aAAe9gE,EACpB/G,KAAKyjE,gBAAgB98D,SAFR,CAKf4iE,kBAAAA,CAAmBrvD,GACjBla,KAAKopE,gBAAkBlvD,EACvBA,EAAeuE,GAAG,YAAY,KAC5Bze,KAAKyjE,gBAAgB98D,SAArB,IAGFuT,EAAeuE,GAAG,OAAO,KAEvBvE,EAAe9K,UACfpP,KAAK8gE,OAAQ,EACb9gE,KAAKyjE,gBAAgB98D,SAArB,IAGFuT,EAAeuE,GAAG,SAAS1X,IACzB/G,KAAKspE,OAAOviE,EAAZ,KAKG/G,KAAKk/D,uBAAyBl/D,KAAKm/D,mBACtCn/D,KAAKspE,OAAO,IAAIniE,EAAAhG,eAAe,0BAI7BnB,KAAK6nE,cACP7nE,KAAKopE,gBAAgBh6D,QAAQpP,KAAK6nE,aAzBH,EA8BrC,MAAM2B,EACJvpE,WAAAA,CAAYy6D,GACV16D,KAAKynE,KAAO/M,EAAOxvE,IACnB8U,KAAK8gE,OAAQ,EACb9gE,KAAK6nE,aAAe,KACpB7nE,KAAKmP,WAAa,KAClBnP,KAAKigE,QAAU,EACfjgE,KAAKopE,gBAAkB,KACvBppE,KAAKyjE,gBAAkB,IAAIt8D,EAAAZ,kBAC3B,MAAMiI,EAASksD,EAAOlsD,OACtBxO,KAAKk/D,uBAAyB1wD,EAAOnD,aATnB,CAYpB,wBAAIqX,GACF,OAAO1iB,KAAKk/D,qBADa,CAI3B,UAAM3kD,GAAO,IAAAkvD,EAEX,SADMzpE,KAAKyjE,gBAAgBh9D,QACvBzG,KAAK8gE,MACP,MAAO,CAAE7xE,WAAO3D,EAAWmvB,MAAM,GAEnC,GAAIza,KAAK6nE,aACP,MAAM7nE,KAAK6nE,aAGb,MAAMrnE,EAAQR,KAAKopE,gBAAgB7uD,OACnC,OAAc,OAAV/Z,GACFR,KAAKyjE,gBAAkB,IAAIt8D,EAAAZ,kBACpBvG,KAAKua,SAEdva,KAAKigE,SAAWz/D,EAAMnV,OACtB,QAAAo+E,EAAAzpE,KAAKmP,kBAAL,IAAAs6D,GAAAA,EAAApnE,KAAArC,KAAkB,CAAEsQ,OAAQtQ,KAAKigE,UAI1B,CAAEhxE,MADM,IAAI/B,WAAWsT,GAAO5Q,OACb6qB,MAAM,GAnBnB,CAsBbQ,MAAAA,CAAOlU,GAGA/G,KAAKopE,gBAIVppE,KAAKopE,gBAAgBh6D,QAAQrI,GAH3B/G,KAAKspE,OAAOviE,EAJD,CAUfuiE,MAAAA,CAAOviE,GACL/G,KAAK6nE,aAAe9gE,EACpB/G,KAAKyjE,gBAAgB98D,SAFR,CAKf4iE,kBAAAA,CAAmBrvD,GACjBla,KAAKopE,gBAAkBlvD,EACvBA,EAAeuE,GAAG,YAAY,KAC5Bze,KAAKyjE,gBAAgB98D,SAArB,IAGFuT,EAAeuE,GAAG,OAAO,KAEvBvE,EAAe9K,UACfpP,KAAK8gE,OAAQ,EACb9gE,KAAKyjE,gBAAgB98D,SAArB,IAGFuT,EAAeuE,GAAG,SAAS1X,IACzB/G,KAAKspE,OAAOviE,EAAZ,IAIE/G,KAAK6nE,cACP7nE,KAAKopE,gBAAgBh6D,QAAQpP,KAAK6nE,aAnBH,EAwBrC,SAAS6B,EAAqBlB,EAAWhH,GACvC,MAAO,CACLx1E,SAAUw8E,EAAUx8E,SACpB29E,KAAMnB,EAAUmB,KAChBlB,KAAMD,EAAUoB,SAChBv9D,KAAMm8D,EAAUn8D,KAChB8+C,KAAMqd,EAAUrd,KAChBuW,OAAQ,MACRF,UAR8C,CAYlD,MAAMuH,UAAgCI,EACpClpE,WAAAA,CAAYy6D,GACV/5D,MAAM+5D,GAEN,MAAMmP,EAAiBvsC,IACrB,GAA4B,MAAxBA,EAASwsC,WAAoB,CAC/B,MAAM3/E,EAAQ,IAAIgd,EAAApG,oBAAJ,gBAAApV,OAAwCqU,KAAKynE,KAAK,OAGhE,OAFAznE,KAAK6nE,aAAe19E,OACpB6V,KAAK0iE,mBAAmB97D,OAAOzc,EAHA,CAMjC6V,KAAK0iE,mBAAmB/7D,UACxB3G,KAAKupE,mBAAmBjsC,GAExB,MAAM4lC,EAAoB18E,GAGjBwZ,KAAKopE,gBAAgB5H,QAAQh7E,EAAKG,gBAErC,mBAAEw8E,EAAF,gBAAsBC,IAC1B,EAAA9B,EAAA+B,kCAAiC,CAC/BH,oBACAjB,OAAQvH,EAAOuH,OACf/3D,eAAgBlK,KAAK4iE,gBACrBx3D,aAAcpL,KAAK2iE,gBAGvB3iE,KAAKm/D,kBAAoBgE,EAEzBnjE,KAAKo/D,eAAiBgE,GAAmBpjE,KAAKo/D,eAE9Cp/D,KAAK+gE,WAAY,EAAAO,EAAAgC,2BAA0BJ,EAA3C,EAIF,GADAljE,KAAK+pE,SAAW,KACW,UAAvB/pE,KAAKynE,KAAKz7E,SAAsB,CAClC,MAAMg+E,EAAO5iF,oBAAwB,OACrC4Y,KAAK+pE,SAAWC,EAAK15B,QACnBo5B,EAAqB1pE,KAAKynE,KAAM/M,EAAO7wD,aACvCggE,EAJgC,KAM7B,CACL,MAAMI,EAAQ7iF,oBAAwB,OACtC4Y,KAAK+pE,SAAWE,EAAM35B,QACpBo5B,EAAqB1pE,KAAKynE,KAAM/M,EAAO7wD,aACvCggE,EAJG,CAQP7pE,KAAK+pE,SAAStrD,GAAG,SAAS1X,IACxB/G,KAAK6nE,aAAe9gE,EACpB/G,KAAK0iE,mBAAmB97D,OAAOG,EAA/B,IAKF/G,KAAK+pE,SAASn5D,KAvDI,EA2DtB,MAAMq4D,UAAiCO,EACrCvpE,WAAAA,CAAYy6D,EAAQvsB,EAAOv9B,GACzBjQ,MAAM+5D,GAEN16D,KAAKkqE,aAAe,CAAC,EACrB,IAAK,MAAMlqB,KAAY0a,EAAO7wD,YAAa,CACzC,MAAM5a,EAAQyrE,EAAO7wD,YAAYm2C,QACnB10D,IAAV2D,IAGJ+Q,KAAKkqE,aAAalqB,GAAY/wD,EALW,CAO3C+Q,KAAKkqE,aAAaC,MAAlB,SAAAx+E,OAAmCwiD,EAAM,KAAAxiD,OAAGilB,EAAM,GAElD,MAAMi5D,EAAiBvsC,IACrB,GAA4B,MAAxBA,EAASwsC,WAKb9pE,KAAKupE,mBAAmBjsC,OALxB,CACE,MAAMnzC,EAAQ,IAAIgd,EAAApG,oBAAJ,gBAAApV,OAAwCqU,KAAKynE,KAAK,OAChEznE,KAAK6nE,aAAe19E,CAFW,CAKjC,EAIF,GADA6V,KAAK+pE,SAAW,KACW,UAAvB/pE,KAAKynE,KAAKz7E,SAAsB,CAClC,MAAMg+E,EAAO5iF,oBAAwB,OACrC4Y,KAAK+pE,SAAWC,EAAK15B,QACnBo5B,EAAqB1pE,KAAKynE,KAAMznE,KAAKkqE,cACrCL,EAJgC,KAM7B,CACL,MAAMI,EAAQ7iF,oBAAwB,OACtC4Y,KAAK+pE,SAAWE,EAAM35B,QACpBo5B,EAAqB1pE,KAAKynE,KAAMznE,KAAKkqE,cACrCL,EAJG,CAQP7pE,KAAK+pE,SAAStrD,GAAG,SAAS1X,IACxB/G,KAAK6nE,aAAe9gE,CAApB,IAEF/G,KAAK+pE,SAASn5D,KAxCgB,EA4ClC,MAAMk4D,UAAkCK,EACtClpE,WAAAA,CAAYy6D,GACV/5D,MAAM+5D,GAEN,IAAIvP,EAAOhlD,mBAAmBnG,KAAKynE,KAAKtc,MAGpCmd,EAAaj+E,KAAK2V,KAAKynE,KAAK94D,QAC9Bw8C,EAAOA,EAAKtkE,QAAQ,MAAO,KAG7B,MAAMujF,EAAKhjF,oBAAwB,OACnCgjF,EAAGC,MAAMlf,GAAM,CAAChhE,EAAOmgF,KACrB,GAAIngF,EAMF,MALmB,WAAfA,EAAM8F,OACR9F,EAAQ,IAAIgd,EAAApG,oBAAJ,gBAAApV,OAAwCw/D,EAAK,QAEvDnrD,KAAK6nE,aAAe19E,OACpB6V,KAAK0iE,mBAAmB97D,OAAOzc,GAIjC6V,KAAKo/D,eAAiBkL,EAAKzwD,KAE3B7Z,KAAKupE,mBAAmBa,EAAGG,iBAAiBpf,IAC5CnrD,KAAK0iE,mBAAmB/7D,SAAxB,GAxBgB,EA6BtB,MAAMqiE,UAAmCQ,EACvCvpE,WAAAA,CAAYy6D,EAAQvsB,EAAOv9B,GACzBjQ,MAAM+5D,GAEN,IAAIvP,EAAOhlD,mBAAmBnG,KAAKynE,KAAKtc,MAGpCmd,EAAaj+E,KAAK2V,KAAKynE,KAAK94D,QAC9Bw8C,EAAOA,EAAKtkE,QAAQ,MAAO,KAG7B,MAAMujF,EAAKhjF,oBAAwB,OACnC4Y,KAAKupE,mBAAmBa,EAAGG,iBAAiBpf,EAAM,CAAEhd,QAAOv9B,IAAKA,EAAM,IAXxC,oFC1alC,IAAAtJ,EAAAF,EAAA,GACAD,EAAAC,EAAA,GAiBA,MAAMojE,EACO,SADPA,EAEQ,SAFRA,EAGO,UAIPxnB,EAAkB,CAAC,OAAQ,QAAS,UACpCC,EAAmB,CAAC,QAAS,QAAS,SAEtCnlC,EAAkB,SACtBjX,GAGA,IAFA4jE,EAAAr/E,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAc,GACds/E,EAAAt/E,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAEA,GAAIW,IAAI+xB,iBAAmC,qBAATC,OAAyB2sD,EACzD,OAAO3+E,IAAI+xB,gBAAgB,IAAIC,KAAK,CAAClX,GAAO,CAAEngB,KAAM+jF,KAGtD,MAAME,EACJ,oEAEF,IAAI/6E,EAAA,QAAAjE,OAAiB8+E,EAAY,YACjC,IAAK,IAAIr9E,EAAI,EAAGa,EAAK4Y,EAAKxb,OAAQ+B,EAAIa,EAAIb,GAAK,EAAG,CAChD,MAAMw9E,EAAe,IAAV/jE,EAAKzZ,GACVy9E,EAAmB,IAAdhkE,EAAKzZ,EAAI,GACd09E,EAAmB,IAAdjkE,EAAKzZ,EAAI,GAKpBwC,GAAU+6E,EAJCC,GAAM,GAIMD,GAHT,EAALC,IAAW,EAAMC,GAAM,GAGIF,EAFzBv9E,EAAI,EAAIa,GAAY,GAAL48E,IAAa,EAAMC,GAAM,EAAK,IAEPH,EADtCv9E,EAAI,EAAIa,EAAU,GAAL68E,EAAY,GAPY,CAUlD,OAAOl7E,CAnBP,EAsBIm7E,EAAuB,WAC3B,MAAMC,EAAa,IAAI99E,WAAW,CAChC,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAItC+9E,EAAW,IAAIha,WAAW,KAChC,IAAK,IAAI7jE,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5B,IAAI4W,EAAI5W,EACR,IAAK,IAAI2rC,EAAI,EAAGA,EAAI,EAAGA,IACrB/0B,EAAQ,EAAJA,EAAQ,WAAeA,GAAK,EAAK,WAAeA,GAAK,EAAK,WAEhEinE,EAAS79E,GAAK4W,CALc,CAkB9B,SAASknE,EAAcxkF,EAAMkD,EAAMid,EAAM0wC,GACvC,IAAIp0C,EAAIo0C,EACR,MAAM4zB,EAAMvhF,EAAKyB,OAEjBwb,EAAK1D,GAAMgoE,GAAO,GAAM,IACxBtkE,EAAK1D,EAAI,GAAMgoE,GAAO,GAAM,IAC5BtkE,EAAK1D,EAAI,GAAMgoE,GAAO,EAAK,IAC3BtkE,EAAK1D,EAAI,GAAW,IAANgoE,EACdhoE,GAAK,EAEL0D,EAAK1D,GAA0B,IAArBzc,EAAKyJ,WAAW,GAC1B0W,EAAK1D,EAAI,GAA0B,IAArBzc,EAAKyJ,WAAW,GAC9B0W,EAAK1D,EAAI,GAA0B,IAArBzc,EAAKyJ,WAAW,GAC9B0W,EAAK1D,EAAI,GAA0B,IAArBzc,EAAKyJ,WAAW,GAC9BgT,GAAK,EAEL0D,EAAKoQ,IAAIrtB,EAAMuZ,GACfA,GAAKvZ,EAAKyB,OAEV,MAAM+/E,EA7BR,SAAevkE,EAAMsnC,EAAOv9B,GAC1B,IAAIw6D,GAAO,EACX,IAAK,IAAIh+E,EAAI+gD,EAAO/gD,EAAIwjB,EAAKxjB,IAAK,CAChC,MAAM2W,EAAsB,KAAjBqnE,EAAMvkE,EAAKzZ,IAEtBg+E,EAAOA,IAAQ,EADLH,EAASlnE,EAFa,CAKlC,OAAOqnE,CAPwB,CA6BnBC,CAAMxkE,EAAM0wC,EAAS,EAAGp0C,GACpC0D,EAAK1D,GAAMioE,GAAO,GAAM,IACxBvkE,EAAK1D,EAAI,GAAMioE,GAAO,GAAM,IAC5BvkE,EAAK1D,EAAI,GAAMioE,GAAO,EAAK,IAC3BvkE,EAAK1D,EAAI,GAAW,IAANioE,CAvBiC,CA0EjD,SAASE,EAAwBC,GAC/B,IAAIJ,EAAMI,EAASlgF,OACnB,MAAMmgF,EAAiB,MAEjBC,EAAgBp+E,KAAKk1D,KAAK4oB,EAAMK,GAChCE,EAAO,IAAIx+E,WAAW,EAAIi+E,EAAsB,EAAhBM,EAAoB,GAC1D,IAAIE,EAAK,EACTD,EAAKC,KAAQ,IACbD,EAAKC,KAAQ,IAEb,IAAI7a,EAAM,EACV,KAAOqa,EAAMK,GAEXE,EAAKC,KAAQ,EACbD,EAAKC,KAAQ,IACbD,EAAKC,KAAQ,IACbD,EAAKC,KAAQ,EACbD,EAAKC,KAAQ,EACbD,EAAKz0D,IAAIs0D,EAAS9qE,SAASqwD,EAAKA,EAAM0a,GAAiBG,GACvDA,GAAMH,EACN1a,GAAO0a,EACPL,GAAOK,EAITE,EAAKC,KAAQ,EACbD,EAAKC,KAAc,IAANR,EACbO,EAAKC,KAASR,GAAO,EAAK,IAC1BO,EAAKC,KAAe,KAANR,EACdO,EAAKC,MAAiB,OAANR,IAAiB,EAAK,IACtCO,EAAKz0D,IAAIs0D,EAAS9qE,SAASqwD,GAAM6a,GACjCA,GAAMJ,EAASlgF,OAASylE,EAExB,MAAM8a,EAjFR,SAAiB/kE,EAAMsnC,EAAOv9B,GAC5B,IAAI7M,EAAI,EACJnB,EAAI,EACR,IAAK,IAAIxV,EAAI+gD,EAAO/gD,EAAIwjB,IAAOxjB,EAC7B2W,GAAKA,GAAe,IAAV8C,EAAKzZ,KAAc,MAC7BwV,GAAKA,EAAImB,GAAK,MAEhB,OAAQnB,GAAK,GAAMmB,CAPc,CAiFnB8nE,CAAQN,EAAU,EAAGA,EAASlgF,QAK5C,OAJAqgF,EAAKC,KAASC,GAAS,GAAM,IAC7BF,EAAKC,KAASC,GAAS,GAAM,IAC7BF,EAAKC,KAASC,GAAS,EAAK,IAC5BF,EAAKC,KAAgB,IAARC,EACNF,CAtCkC,CAyC3C,SAASI,EAAO9tB,EAASa,EAAM6rB,EAAiBqB,GAC9C,MAAMxnD,EAAQy5B,EAAQz5B,MAChBC,EAASw5B,EAAQx5B,OACvB,IAAIwnD,EAAUC,EAAWpb,EACzB,MAAM1wD,EAAQ69C,EAAQn3C,KAEtB,OAAQg4C,GACN,KAAK13C,EAAAjT,UAAUC,eACb83E,EAAY,EACZD,EAAW,EACXnb,EAAYtsC,EAAQ,GAAM,EAC1B,MACF,KAAKpd,EAAAjT,UAAUE,UACb63E,EAAY,EACZD,EAAW,EACXnb,EAAmB,EAARtsC,EACX,MACF,KAAKpd,EAAAjT,UAAUG,WACb43E,EAAY,EACZD,EAAW,EACXnb,EAAmB,EAARtsC,EACX,MACF,QACE,MAAM,IAAIt6B,MAAM,kBAIpB,MAAMshF,EAAW,IAAIr+E,YAAY,EAAI2jE,GAAYrsC,GACjD,IAAI0nD,EAAiB,EACnBC,EAAc,EAChB,IAAK,IAAIh/C,EAAI,EAAGA,EAAI3I,IAAU2I,EAC5Bo+C,EAASW,KAAoB,EAC7BX,EAASt0D,IACP9W,EAAMM,SAAS0rE,EAAaA,EAActb,GAC1Cqb,GAEFC,GAAetb,EACfqb,GAAkBrb,EAGpB,GAAIhS,IAAS13C,EAAAjT,UAAUC,gBAAkB43E,EAAQ,CAE/CG,EAAiB,EACjB,IAAK,IAAI/+C,EAAI,EAAGA,EAAI3I,EAAQ2I,IAAK,CAC/B++C,IACA,IAAK,IAAI9+E,EAAI,EAAGA,EAAIyjE,EAAUzjE,IAC5Bm+E,EAASW,MAAqB,GAHD,CAHc,CAWjD,MAAME,EAAO,IAAIl/E,WAAW,CACzBq3B,GAAS,GAAM,IACfA,GAAS,GAAM,IACfA,GAAS,EAAK,IACP,IAARA,EACCC,GAAU,GAAM,IAChBA,GAAU,GAAM,IAChBA,GAAU,EAAK,IACP,IAATA,EACAwnD,EACAC,EACA,EACA,EACA,IAEIP,EA3IR,SAAqBH,GACnB,IAAKpkE,EAAA5W,SAIH,OAAO+6E,EAAwBC,GAEjC,IAUE,MAAMz4B,EAEJjI,SAASr6C,QAAQC,SAAS47E,OAAS,EAAId,EAAW18D,OAAOy9D,KAAKf,GAC1DgB,EAASnlF,oBAAAA,OAAAA,YAA4C0rD,EAAO,CAChE3jD,MAAO,IAET,OAAOo9E,aAAkBr/E,WAAaq/E,EAAS,IAAIr/E,WAAWq/E,EAhB5D,CAiBF,MAAOtjF,IACP,EAAAke,EAAA5d,MAAK,gEAAkEN,EAD7D,CAIZ,OAAOqiF,EAAwBC,EA5BF,CA2IhBiB,CAAYjB,GAGnBkB,EACJzB,EAAW3/E,OAASqhF,GAAyBN,EAAK/gF,OAASqgF,EAAKrgF,OAC5Dwb,EAAO,IAAI3Z,WAAWu/E,GAC5B,IAAIl1B,EAAS,EASb,OARA1wC,EAAKoQ,IAAI+zD,EAAYzzB,GACrBA,GAAUyzB,EAAW3/E,OACrB6/E,EAAc,OAAQkB,EAAMvlE,EAAM0wC,GAClCA,GApNyB,GAoNM60B,EAAK/gF,OACpC6/E,EAAc,QAASQ,EAAM7kE,EAAM0wC,GACnCA,GAtNyB,GAsNMm0B,EAAKrgF,OACpC6/E,EAAc,OAAQ,IAAIh+E,WAAW,GAAI2Z,EAAM0wC,GAExCz5B,EAAgBjX,EAAM,YAAa6jE,EAjFY,CAqFxD,OAAO,SAA6B1sB,EAAS0sB,EAAiBqB,GAG5D,OAAOD,EAAO9tB,OADK1yD,IAAjB0yD,EAAQa,KAAqB13C,EAAAjT,UAAUC,eAAiB6pD,EAAQa,KACrC6rB,EAAiBqB,EAHsB,CAjO/B,CAAZ,GAwO7B,MAAMY,EACJ1sE,WAAAA,GACED,KAAKs7C,cAAgB,EACrBt7C,KAAK24C,WAAa6xB,EAClBxqE,KAAKq7C,SAAW,EAEhBr7C,KAAKu7C,WAAap0C,EAAAvW,gBAClBoP,KAAKy7C,WAAat0C,EAAAtW,qBAClBmP,KAAK07C,QAAU,EACf17C,KAAKg8C,kBAAoB70C,EAAA5T,kBAAkBC,KAC3CwM,KAAKw7C,gBAAkB,EAGvBx7C,KAAKktB,EAAI,EACTltB,KAAKmtB,EAAI,EAGTntB,KAAK27C,MAAQ,EACb37C,KAAK47C,MAAQ,EAGb57C,KAAK67C,YAAc,EACnB77C,KAAK87C,YAAc,EACnB97C,KAAK+7C,WAAa,EAClB/7C,KAAKi8C,SAAW,EAGhBj8C,KAAKk8C,UAAYsuB,EACjBxqE,KAAKm8C,YAAc,UAEnBn8C,KAAKq8C,UAAY,EACjBr8C,KAAKs8C,YAAc,EACnBt8C,KAAKu8C,UAAY,EACjBv8C,KAAK0gD,SAAW,GAChB1gD,KAAKygD,QAAU,GACfzgD,KAAK2gD,WAAa,EAElB3gD,KAAKioD,UAAY,GACjBjoD,KAAKkoD,UAAY,EAEjBloD,KAAK4sE,aAAe,GAGpB5sE,KAAK6sE,cAAgB,KACrB7sE,KAAK8sE,UAAY,KAEjB9sE,KAAK+sE,OAAS,EA7CF,CAgDdpiD,KAAAA,GACE,OAAO77B,OAAOC,OAAOiR,KADf,CAIR48C,eAAAA,CAAgB1vB,EAAGC,GACjBntB,KAAKktB,EAAIA,EACTltB,KAAKmtB,EAAIA,CAFW,EAiCxB,SAAS6/C,EAAG/9E,GACV,GAAIG,OAAOC,UAAUJ,GACnB,OAAOA,EAAM5C,WAEf,MAAMorD,EAAIxoD,EAAMyiC,QAAQ,IACxB,IAAItkC,EAAIqqD,EAAEpsD,OAAS,EACnB,GAAa,MAATosD,EAAErqD,GACJ,OAAOqqD,EAIT,GACErqD,UACgB,MAATqqD,EAAErqD,IACX,OAAOqqD,EAAErN,UAAU,EAAY,MAATqN,EAAErqD,GAAaA,EAAIA,EAAI,EAd5B,CAyBnB,SAAS6/E,EAAG7pE,GACV,GAAa,IAATA,EAAE,IAAqB,IAATA,EAAE,GAAU,CAC5B,GAAa,IAATA,EAAE,IAAqB,IAATA,EAAE,GAClB,OAAa,IAATA,EAAE,IAAqB,IAATA,EAAE,GACX,GAEF,SAAPzX,OAAgBqhF,EAAG5pE,EAAE,IAAI,KAAAzX,OAAGqhF,EAAG5pE,EAAE,IAAI,KAEvC,GAAIA,EAAE,KAAOA,EAAE,IAAMA,EAAE,MAAQA,EAAE,GAAI,CACnC,MAAMW,EAAuB,IAAlB1W,KAAK6/E,KAAK9pE,EAAE,IAAa/V,KAAKuL,GACzC,MAAO,UAAPjN,OAAiBqhF,EAAGjpE,GAAG,IAFY,CAPT,MAWvB,GAAa,IAATX,EAAE,IAAqB,IAATA,EAAE,IAAqB,IAATA,EAAE,IAAqB,IAATA,EAAE,GACrD,MAAO,aAAPzX,OAAoBqhF,EAAG5pE,EAAE,IAAI,KAAAzX,OAAGqhF,EAAG5pE,EAAE,IAAI,KAE3C,MACG,UAAAzX,OAASqhF,EAAG5pE,EAAE,IAAI,KAAAzX,OAAGqhF,EAAG5pE,EAAE,IAAI,KAAAzX,OAAGqhF,EAAG5pE,EAAE,IAAI,KAAAzX,OAAGqhF,EAAG5pE,EAAE,IAAI,KAAAzX,OAAGqhF,EAAG5pE,EAAE,IAAI,QAAAzX,OAChEqhF,EAAG5pE,EAAE,IAAI,IAjBD,CAwBf,IAAI+pE,EAAY,EACZC,EAAY,EACZC,EAAe,EAvbnBrnF,EAAAsnF,YAybA,MACErtE,WAAAA,CAAYsU,EAAYC,GAA+B,IAAzBk2D,EAAAt/E,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,IAC5B,EAAAkc,EAAA2J,YACE,gFAEFjR,KAAKutE,WAAa,IAAIjmE,EAAA6pC,cAEtBnxC,KAAKm5C,QAAU,IAAIwzB,EACnB3sE,KAAKwtE,gBAAkBrmE,EAAAvW,gBACvBoP,KAAKytE,eAAiB,GACtBztE,KAAK0tE,WAAa,GAClB1tE,KAAKuU,WAAaA,EAClBvU,KAAKwU,KAAOA,EACZxU,KAAKyjD,YAAc,KACnBzjD,KAAK0jD,eAAgB,EAErB1jD,KAAK2tE,YAAa,EAClB3tE,KAAK4tE,cAAgB9+E,OAAOC,OAAO,MACnCiR,KAAK6tE,SAAW,KAChB7tE,KAAK0qE,kBAAoBA,EAKzB1qE,KAAK8tE,mBAAqB,GAC1B,IAAK,MAAM/a,KAAM5rD,EAAAtN,IACfmG,KAAK8tE,mBAAmB3mE,EAAAtN,IAAIk5D,IAAOA,CAzBgB,CA6BvDhO,SAAAA,CAAUl+C,GAAuB,IAAjBm+C,EAAA55D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAW,KACzB,MAAoB,kBAATyb,EACFA,EAAKrb,WAAW,MACnBwU,KAAKuU,WAAW5lB,IAAIkY,GACpB7G,KAAKwU,KAAK7lB,IAAIkY,GAEbm+C,CANwB,CASjCzqD,IAAAA,GACEyF,KAAKytE,eAAer9E,KAAK4P,KAAKwtE,iBAC9B,MAAMnjB,EAAMrqD,KAAKm5C,QACjBn5C,KAAK0tE,WAAWt9E,KAAKi6D,GACrBrqD,KAAKm5C,QAAUkR,EAAI1/B,OAJd,CAOPnwB,OAAAA,GACEwF,KAAKwtE,gBAAkBxtE,KAAKytE,eAAenjB,MAC3CtqD,KAAKm5C,QAAUn5C,KAAK0tE,WAAWpjB,MAC/BtqD,KAAKyjD,YAAc,KACnBzjD,KAAK+tE,KAAO,IAJJ,CAOVte,KAAAA,CAAM31C,GACJ9Z,KAAKzF,OACLyF,KAAKguE,cAAcl0D,GACnB9Z,KAAKxF,SAHM,CAMbyzE,gBAAAA,CAAiB12D,GACf,MAAMC,EAAUD,EAAaC,QACvBC,EAAYF,EAAaE,UAE/B,IAAK,IAAIrqB,EAAI,EAAGa,EAAKupB,EAAQnsB,OAAQ+B,EAAIa,EAAIb,IAC3C,GAAIoqB,EAAQpqB,KAAO+Z,EAAAtN,IAAIC,WAIvB,IAAK,MAAMjL,KAAO4oB,EAAUrqB,GAAI,CAC9B,MAAM24D,EAAWl3D,EAAIrD,WAAW,MAAQwU,KAAKuU,WAAavU,KAAKwU,KACzD/N,EAAU,IAAIC,SAAQC,IAC1Bo/C,EAASp3D,IAAIE,EAAK8X,EAAlB,IAEF3G,KAAKm5C,QAAQyzB,aAAax8E,KAAKqW,EALD,CAQlC,OAAOC,QAAQne,IAAIyX,KAAKm5C,QAAQyzB,aAjBH,CAoB/BnyE,SAAAA,CAAUsJ,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GACvB,MAAMujC,EAAkB,CAACzpE,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GACxCjqC,KAAKwtE,gBAAkBrmE,EAAA3E,KAAK/H,UAC1BuF,KAAKwtE,gBACLA,GAEFxtE,KAAK+tE,KAAO,IANc,CAS5BG,MAAAA,CAAO32D,EAAclB,GACnBrW,KAAKqW,SAAWA,EAEhB,MAAM83D,EAAanuE,KAAKwe,YAAYnI,GACpC,OAAOrW,KAAKiuE,iBAAiB12D,GAAcxK,MAAK,KAC9C/M,KAAKwtE,gBAAkBrmE,EAAAvW,gBACvBoP,KAAKguE,cAAchuE,KAAKouE,cAAc72D,IAC/B42D,IAPoB,CAW/BC,aAAAA,CAAc72D,GACZ,MAAM82D,EAAoBruE,KAAK8tE,mBACzBr2D,EAAYF,EAAaE,UACzBD,EAAUD,EAAaC,QACvB82D,EAAS,GACf,IAAK,IAAIlhF,EAAI,EAAGa,EAAKupB,EAAQnsB,OAAQ+B,EAAIa,EAAIb,IAAK,CAChD,MAAMw4D,EAAOpuC,EAAQpqB,GACrBkhF,EAAOl+E,KAAK,CACVw1D,OACA2oB,GAAIF,EAAkBzoB,GACtB/lB,KAAMpoB,EAAUrqB,IAL8B,CAQlD,OAhMJ,SAAsBkhF,GACpB,IAAIE,EAAS,GACb,MAAM3Z,EAAM,GAEZ,IAAK,MAAM4Z,KAAiBH,EACD,SAArBG,EAAcF,GAOO,YAArBE,EAAcF,GAChBC,EAAS3Z,EAAIvK,MAEbkkB,EAAOp+E,KAAKq+E,IATZD,EAAOp+E,KAAK,CAAEw1D,KAAM,GAAI2oB,GAAI,QAASz0D,MAAO,KAC5C+6C,EAAIzkE,KAAKo+E,GACTA,EAASA,EAAOhvC,IAAI,GAAG1lB,OAU3B,OAAO00D,CAlBqB,CAgMnBE,CAAaJ,EAbM,CAgB5BN,aAAAA,CAAcQ,GACZ,IAAK,MAAMG,KAAiBH,EAAQ,CAClC,MAAMD,EAAKI,EAAcJ,GACnB3oB,EAAO+oB,EAAc/oB,KACrB/lB,EAAO8uC,EAAc9uC,KAE3B,OAAe,EAAP+lB,GACN,KAAKz+C,EAAAtN,IAAI8B,UACPqE,KAAKrE,YACL,MACF,KAAKwL,EAAAtN,IAAIC,WAEP,MACF,KAAKqN,EAAAtN,IAAImC,WACPgE,KAAKhE,WAAW6jC,GAChB,MACF,KAAK14B,EAAAtN,IAAIwC,mBACP2D,KAAK3D,mBAAmBwjC,EAAK,GAAIA,EAAK,IACtC,MACF,KAAK14B,EAAAtN,IAAIoC,QACP+D,KAAK/D,QAAQ4jC,GACb,MACF,KAAK14B,EAAAtN,IAAI2C,SAGT,KAAK2K,EAAAtN,IAAI4C,eACPuD,KAAKxD,SAASqjC,EAAK,IACnB,MACF,KAAK14B,EAAAtN,IAAI+B,QACPoE,KAAKpE,UACL,MACF,KAAKuL,EAAAtN,IAAIuC,SACP4D,KAAK5D,SAASyjC,EAAK,GAAIA,EAAK,IAC5B,MACF,KAAK14B,EAAAtN,IAAIgC,eACPmE,KAAKnE,eAAegkC,EAAK,IACzB,MACF,KAAK14B,EAAAtN,IAAIiC,eACPkE,KAAKlE,eAAe+jC,EAAK,IACzB,MACF,KAAK14B,EAAAtN,IAAIkC,UACPiE,KAAKjE,UAAU8jC,EAAK,IACpB,MACF,KAAK14B,EAAAtN,IAAIyC,cACP0D,KAAK1D,cACHujC,EAAK,GACLA,EAAK,GACLA,EAAK,GACLA,EAAK,GACLA,EAAK,GACLA,EAAK,IAEP,MACF,KAAK14B,EAAAtN,IAAIsC,YACP6D,KAAK7D,YAAY0jC,EAAK,IACtB,MACF,KAAK14B,EAAAtN,IAAIqC,qBACP8D,KAAK9D,qBAAqB2jC,EAAK,IAC/B,MACF,KAAK14B,EAAAtN,IAAIE,aACPiG,KAAKjG,aAAa8lC,EAAK,IACvB,MACF,KAAK14B,EAAAtN,IAAII,YACP+F,KAAK/F,YAAY4lC,EAAK,IACtB,MACF,KAAK14B,EAAAtN,IAAIG,WACPgG,KAAKhG,WAAW6lC,EAAK,IACrB,MACF,KAAK14B,EAAAtN,IAAIK,cACP8F,KAAK9F,cAAc2lC,EAAK,IACxB,MACF,KAAK14B,EAAAtN,IAAI0D,gBACPyC,KAAKzC,gBAAgBsiC,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC5C,MACF,KAAK14B,EAAAtN,IAAIyD,kBACP0C,KAAK1C,kBAAkBuiC,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC9C,MACF,KAAK14B,EAAAtN,IAAIoD,gBACP+C,KAAK/C,gBAAgB4iC,GACrB,MACF,KAAK14B,EAAAtN,IAAIsD,cACP6C,KAAK7C,cAAc0iC,GACnB,MACF,KAAK14B,EAAAtN,IAAI6D,YACPsC,KAAKtC,YAAYmiC,EAAK,IACtB,MACF,KAAK14B,EAAAtN,IAAIM,QACP6F,KAAK7F,QAAQ0lC,EAAK,GAAIA,EAAK,IAC3B,MACF,KAAK14B,EAAAtN,IAAIO,mBACP4F,KAAK5F,mBAAmBylC,EAAK,IAC7B,MACF,KAAK14B,EAAAtN,IAAIQ,YACP2F,KAAK3F,YAAYwlC,EAAK,IACtB,MACF,KAAK14B,EAAAtN,IAAIS,UACP0F,KAAK1F,UAAUulC,EAAK,IACpB,MACF,KAAK14B,EAAAtN,IAAIsB,KACP6E,KAAK7E,OACL,MACF,KAAKgM,EAAAtN,IAAIuB,OACP4E,KAAK5E,SACL,MACF,KAAK+L,EAAAtN,IAAIoB,OACP+E,KAAK/E,SACL,MACF,KAAKkM,EAAAtN,IAAIwB,WACP2E,KAAK3E,aACL,MACF,KAAK8L,EAAAtN,IAAIyB,aACP0E,KAAK1E,eACL,MACF,KAAK6L,EAAAtN,IAAInR,KACPsX,KAAKtX,KAAK,WACV,MACF,KAAKye,EAAAtN,IAAI6B,OACPsE,KAAKtX,KAAK,WACV,MACF,KAAKye,EAAAtN,IAAIsF,yBACPa,KAAKb,2BACL,MACF,KAAKgI,EAAAtN,IAAIiF,kBACPkB,KAAKlB,kBAAkB+gC,EAAK,IAC5B,MACF,KAAK14B,EAAAtN,IAAIkF,wBACPiB,KAAKjB,wBAAwB8gC,EAAK,IAClC,MACF,KAAK14B,EAAAtN,IAAI+E,sBACPoB,KAAKpB,sBAAsBihC,EAAK,IAChC,MACF,KAAK14B,EAAAtN,IAAIyE,sBACP0B,KAAK1B,sBAAsBuhC,EAAK,GAAIA,EAAK,IACzC,MACF,KAAK14B,EAAAtN,IAAI0E,oBACPyB,KAAKzB,sBACL,MACF,KAAK4I,EAAAtN,IAAIkB,UACPiF,KAAKjF,YACL,MACF,KAAKoM,EAAAtN,IAAIqB,YACP8E,KAAK9E,cACL,MACF,KAAKiM,EAAAtN,IAAI0B,gBACPyE,KAAKzE,kBACL,MACF,KAAK4L,EAAAtN,IAAI2B,kBACPwE,KAAKxE,oBACL,MACF,KAAK2L,EAAAtN,IAAI0C,SACPyD,KAAKzD,WACL,MACF,KAAK4K,EAAAtN,IAAIY,UACPuF,KAAKvF,UAAUolC,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,MACF,KAAK14B,EAAAtN,IAAIuF,cACPY,KAAKZ,cAAcygC,EAAK,GAAIA,EAAK,IACjC,MACF,KAAK14B,EAAAtN,IAAI4B,QACPuE,KAAKvE,UACL,MACF,KAAK,GACHuE,KAAKyvD,MAAMkf,EAAc70D,OACzB,MACF,SACE,EAAA3S,EAAA5d,MAAA,0BAAAoC,OAA+B4iF,IApKD,CADhB,CA2KtBzyE,cAAAA,CAAeggD,GACb97C,KAAKm5C,QAAQ2C,YAAcA,CADD,CAI5BjgD,cAAAA,CAAeggD,GACb77C,KAAKm5C,QAAQ0C,YAAcA,CADD,CAI5Bt/C,QAAAA,GACEyD,KAAK5D,SAAS,EAAG4D,KAAKm5C,QAAQuC,QADrB,CAIXp/C,aAAAA,CAAcyH,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GAC3B,MAAMkP,EAAUn5C,KAAKm5C,QACrBA,EAAQoC,WAAapC,EAAQy1B,WAAa,CAAC7qE,EAAGnB,EAAGoB,EAAGV,EAAGra,EAAGghD,GAC1DkP,EAAQqC,gBAAkBnuD,KAAKwsC,MAAM91B,EAAGnB,GAExCu2C,EAAQjsB,EAAIisB,EAAQwC,MAAQ,EAC5BxC,EAAQhsB,EAAIgsB,EAAQyC,MAAQ,EAE5BzC,EAAQ01B,QAAU,GAClB11B,EAAQ21B,QAAU,GAClB31B,EAAQ41B,MAAQ/uE,KAAKutE,WAAWplF,cAAc,aAC9CgxD,EAAQ41B,MAAMC,eAAe,KAAM,cAAe71B,EAAQnB,YAC1DmB,EAAQ41B,MAAMC,eACZ,KACA,YAFF,GAAArjF,OAGKqhF,EAAG7zB,EAAQkC,UAAU,OAE1BlC,EAAQ41B,MAAMC,eAAe,KAAM,IAAKhC,GAAI7zB,EAAQhsB,IAEpDgsB,EAAQ81B,WAAajvE,KAAKutE,WAAWplF,cAAc,YACnDgxD,EAAQ81B,WAAW97C,OAAOgmB,EAAQ41B,MApBJ,CAuBhCpzE,SAAAA,GACE,MAAMw9C,EAAUn5C,KAAKm5C,QACrBA,EAAQjsB,EAAIisB,EAAQwC,MAAQ,EAC5BxC,EAAQhsB,EAAIgsB,EAAQyC,MAAQ,EAC5BzC,EAAQoC,WAAap0C,EAAAvW,gBACrBuoD,EAAQy1B,WAAaznE,EAAAvW,gBACrBuoD,EAAQqC,gBAAkB,EAC1BrC,EAAQ41B,MAAQ/uE,KAAKutE,WAAWplF,cAAc,aAC9CgxD,EAAQ81B,WAAajvE,KAAKutE,WAAWplF,cAAc,YACnDgxD,EAAQ+1B,OAASlvE,KAAKutE,WAAWplF,cAAc,SAC/CgxD,EAAQ01B,QAAU,GAClB11B,EAAQ21B,QAAU,EAXR,CAcZ1yE,QAAAA,CAAS8wB,EAAGC,GACV,MAAMgsB,EAAUn5C,KAAKm5C,QACrBA,EAAQjsB,EAAIisB,EAAQwC,OAASzuB,EAC7BisB,EAAQhsB,EAAIgsB,EAAQyC,OAASzuB,EAE7BgsB,EAAQ01B,QAAU,GAClB11B,EAAQ21B,QAAU,GAClB31B,EAAQ41B,MAAQ/uE,KAAKutE,WAAWplF,cAAc,aAC9CgxD,EAAQ41B,MAAMC,eAAe,KAAM,cAAe71B,EAAQnB,YAC1DmB,EAAQ41B,MAAMC,eACZ,KACA,YAFF,GAAArjF,OAGKqhF,EAAG7zB,EAAQkC,UAAU,OAE1BlC,EAAQ41B,MAAMC,eAAe,KAAM,IAAKhC,GAAI7zB,EAAQhsB,GAdvC,CAiBf3wB,QAAAA,CAAS+vD,GACP,MAAMpT,EAAUn5C,KAAKm5C,QACfr1B,EAAOq1B,EAAQr1B,KACfu3B,EAAWlC,EAAQkC,SACzB,GAAiB,IAAbA,EACF,OAGF,MAAMC,EAAgBnC,EAAQmC,cACxBO,EAAc1C,EAAQ0C,YACtBC,EAAc3C,EAAQ2C,YACtB2P,EAAgBtS,EAAQsS,cACxB1P,EAAa5C,EAAQ4C,WAAa0P,EAClCiB,EAAW5oC,EAAK4oC,SAChBC,EAAaD,EAAW,GAAK,EAC7BE,EAAkB9oC,EAAK8oC,gBACvBC,EAAoBxR,EAAWlC,EAAQsC,WAAW,GAExD,IAAIvuB,EAAI,EACR,IAAK,MAAMigC,KAASZ,EAAQ,CAC1B,GAAc,OAAVY,EAAgB,CAElBjgC,GAAKu+B,EAAgB3P,EACrB,QAHkB,CAIb,GAAqB,kBAAVqR,EAAoB,CACpCjgC,GAAMy/B,EAAaQ,EAAQ9R,EAAY,IACvC,QAFoC,CAKtC,MAAMgQ,GAAW8B,EAAMG,QAAUxR,EAAc,GAAKD,EAC9C7C,EAAYmU,EAAMI,SACxB,IAAIE,EAASC,EACTnpC,EAAQ4oC,EAAM5oC,MAClB,GAAImoC,EAAU,CACZ,IAAIkB,EACJ,MAAMD,EAAUR,EAAMQ,SAAWf,EACjCgB,EAAKT,EAAMQ,QAAUA,EAAQ,GAAa,GAARppC,EAClCqpC,GAAMA,EAAKf,EACX,MAAMgB,EAAKF,EAAQ,GAAKd,EAExBtoC,EAAQopC,GAAWA,EAAQ,GAAKppC,EAChCkpC,EAAUG,EAAKtS,EACfoS,GAAWxgC,EAAI2gC,GAAMvS,CATT,MAWZmS,EAAUvgC,EAAIouB,EACdoS,EAAU,GAGRP,EAAMe,UAAYpqC,EAAKwyB,eACzB6C,EAAQ01B,QAAQz+E,KAAK+oD,EAAQjsB,EAAIugC,GAC7Bf,GACFvT,EAAQ21B,QAAQ1+E,MAAM+oD,EAAQhsB,EAAIugC,GAEpCvU,EAAQ41B,MAAM3mF,aAAe4wD,GAY/B9rB,GAJkBw/B,EACdnoC,EAAQsoC,EAAoBxB,EAAUI,EACtClnC,EAAQsoC,EAAoBxB,EAAUI,CA5ChB,CAgD5BtS,EAAQ41B,MAAMC,eAAe,KAAM,IAAK71B,EAAQ01B,QAAQjgF,IAAIo+E,GAAIpgF,KAAK,MACjE8/D,EACFvT,EAAQ41B,MAAMC,eACZ,KACA,IACA71B,EAAQ21B,QAAQlgF,IAAIo+E,GAAIpgF,KAAK,MAG/BusD,EAAQ41B,MAAMC,eAAe,KAAM,IAAKhC,GAAI7zB,EAAQhsB,IAGlDu/B,EACFvT,EAAQhsB,GAAKD,EAEbisB,EAAQjsB,GAAKA,EAAI6uB,EAGnB5C,EAAQ41B,MAAMC,eAAe,KAAM,cAAe71B,EAAQnB,YAC1DmB,EAAQ41B,MAAMC,eACZ,KACA,YAFF,GAAArjF,OAGKqhF,EAAG7zB,EAAQkC,UAAU,OAEtBlC,EAAQg2B,YAAc3E,GACxBrxB,EAAQ41B,MAAMC,eAAe,KAAM,aAAc71B,EAAQg2B,WAEvDh2B,EAAQR,aAAe6xB,GACzBrxB,EAAQ41B,MAAMC,eAAe,KAAM,cAAe71B,EAAQR,YAG5D,MAAMwT,EACJhT,EAAQ6C,kBAAoB70C,EAAA5T,kBAAkBS,iBAmBhD,GAjBEm4D,IAAmBhlD,EAAA5T,kBAAkBC,MACrC24D,IAAmBhlD,EAAA5T,kBAAkBG,aAEjCylD,EAAQ+C,YAAcsuB,GACxBrxB,EAAQ41B,MAAMC,eAAe,KAAM,OAAQ71B,EAAQ+C,WAEjD/C,EAAQkD,UAAY,GACtBlD,EAAQ41B,MAAMC,eAAe,KAAM,eAAgB71B,EAAQkD,YAEpDlD,EAAQ6C,oBAAsB70C,EAAA5T,kBAAkBQ,YAGzDolD,EAAQ41B,MAAMC,eAAe,KAAM,OAAQ,eAE3C71B,EAAQ41B,MAAMC,eAAe,KAAM,OAAQ,QAI3C7iB,IAAmBhlD,EAAA5T,kBAAkBE,QACrC04D,IAAmBhlD,EAAA5T,kBAAkBG,YACrC,CACA,MAAM07E,EAAiB,GAAKj2B,EAAQqC,iBAAmB,GACvDx7C,KAAKqvE,qBAAqBl2B,EAAQ41B,MAAOK,EAFzC,CAQF,IAAI7zB,EAAapC,EAAQoC,WACA,IAArBpC,EAAQ8C,WACVV,EAAaA,EAAW/3C,QACxB+3C,EAAW,IAAMpC,EAAQ8C,UAG3B9C,EAAQ81B,WAAWD,eACjB,KACA,YAFF,GAAArjF,OAGKshF,EAAG1xB,GAAY,WAAA5vD,OAASqhF,EAAGjxB,GAAc,UAE9C5C,EAAQ81B,WAAWD,eA73BR,uCA63B+B,YAAa,YACvD71B,EAAQ81B,WAAW97C,OAAOgmB,EAAQ41B,OAClC51B,EAAQ+1B,OAAO/7C,OAAOgmB,EAAQ81B,YAE9BjvE,KAAKsvE,wBAAwBn8C,OAAOgmB,EAAQ81B,WA/I7B,CAkJjB5yE,kBAAAA,CAAmB6wB,EAAGC,GACpBntB,KAAKhE,YAAYmxB,GACjBntB,KAAK5D,SAAS8wB,EAAGC,EAFM,CAKzBoiD,YAAAA,CAAa/jB,GACX,IAAKA,EAAQ3kD,KACX,MAAM,IAAI5c,MACR,qGAIC+V,KAAK6tE,WACR7tE,KAAK6tE,SAAW7tE,KAAKutE,WAAWplF,cAAc,aAC9C6X,KAAK6tE,SAASmB,eAAe,KAAM,OAAQ,YAC3ChvE,KAAKwvE,KAAKr8C,OAAOnzB,KAAK6tE,WAGxB,MAAM3iF,EAAM4yB,EACV0tC,EAAQ3kD,KACR2kD,EAAQ1S,SACR94C,KAAK0qE,iBAEP1qE,KAAK6tE,SAASzlF,aACX,8BAAAuD,OAA6B6/D,EAAQzV,WAAW,mBAAApqD,OACpCT,EAAI,SApBC,CAuBtB+Q,OAAAA,CAAQ4E,GACN,MAAMs4C,EAAUn5C,KAAKm5C,QACfqS,EAAUxrD,KAAKuU,WAAW5lB,IAAIkS,EAAQ,IAC5C,IAAIgZ,EAAOhZ,EAAQ,GACnBs4C,EAAQr1B,KAAO0nC,GAGbxrD,KAAK2tE,YACJniB,EAAQlV,aACRt2C,KAAK4tE,cAAcpiB,EAAQzV,cAE5B/1C,KAAKuvE,aAAa/jB,GAClBxrD,KAAK4tE,cAAcpiB,EAAQzV,YAAcyV,GAE3CrS,EAAQsC,WAAa+P,EAAQ/P,YAAct0C,EAAAtW,qBAE3C,IAAIg7D,EAAO,SACPL,EAAQrM,MACV0M,EAAO,MACEL,EAAQK,OACjBA,EAAO,QAET,MAAMC,EAASN,EAAQM,OAAS,SAAW,SAEvCjyC,EAAO,GACTA,GAAQA,EACRs/B,EAAQsS,eAAiB,GAEzBtS,EAAQsS,cAAgB,EAE1BtS,EAAQkC,SAAWxhC,EACnBs/B,EAAQnB,WAAawT,EAAQzV,WAC7BoD,EAAQR,WAAakT,EACrB1S,EAAQg2B,UAAYrjB,EAEpB3S,EAAQ41B,MAAQ/uE,KAAKutE,WAAWplF,cAAc,aAC9CgxD,EAAQ41B,MAAMC,eAAe,KAAM,IAAKhC,GAAI7zB,EAAQhsB,IACpDgsB,EAAQ01B,QAAU,GAClB11B,EAAQ21B,QAAU,EAtCH,CAyCjBlzE,OAAAA,GAAU,IAAA6zE,EACR,MAAMt2B,EAAUn5C,KAAKm5C,QAEnBA,EAAQ6C,kBAAoB70C,EAAA5T,kBAAkBU,kBAC9C,QADAw7E,EACAt2B,EAAQ81B,kBAAR,IAAAQ,GAAAA,EAAoBC,kBAGpBv2B,EAAQje,QAAUie,EAAQ81B,WAC1BjvE,KAAKtX,KAAK,WACVsX,KAAKvE,UATC,CAcV1B,YAAAA,CAAawqB,GACPA,EAAQ,IACVvkB,KAAKm5C,QAAQoD,UAAYh4B,EAFT,CAMpBvqB,UAAAA,CAAW1R,GACT0X,KAAKm5C,QAAQsH,QAAUuC,EAAgB16D,EADvB,CAIlB2R,WAAAA,CAAY3R,GACV0X,KAAKm5C,QAAQuH,SAAWuC,EAAiB36D,EADxB,CAInB4R,aAAAA,CAAc8tD,GACZhoD,KAAKm5C,QAAQwH,WAAaqH,CADP,CAIrB2nB,cAAAA,CAAerzB,GACbt8C,KAAKm5C,QAAQmD,YAAcA,CADD,CAI5Bh/C,iBAAAA,CAAkBoF,EAAGC,EAAGC,GACtB5C,KAAKm5C,QAAQgD,YAAch1C,EAAA3E,KAAKC,aAAaC,EAAGC,EAAGC,EAD1B,CAI3BgtE,YAAAA,CAAavzB,GACXr8C,KAAKm5C,QAAQkD,UAAYA,CADH,CAIxB9+C,eAAAA,CAAgBmF,EAAGC,EAAGC,GACpB5C,KAAKm5C,QAAQ+C,UAAY/0C,EAAA3E,KAAKC,aAAaC,EAAGC,EAAGC,GACjD5C,KAAKm5C,QAAQ41B,MAAQ/uE,KAAKutE,WAAWplF,cAAc,aACnD6X,KAAKm5C,QAAQ01B,QAAU,GACvB7uE,KAAKm5C,QAAQ21B,QAAU,EAJA,CAOzB7xE,eAAAA,CAAgB4iC,GACd7/B,KAAKm5C,QAAQgD,YAAcn8C,KAAK6vE,oBAAoBhwC,EADhC,CAItB1iC,aAAAA,CAAc0iC,GACZ7/B,KAAKm5C,QAAQ+C,UAAYl8C,KAAK6vE,oBAAoBhwC,EADhC,CAIpBniC,WAAAA,CAAYmiC,GACV,MAAM,MAAEtb,EAAF,OAASC,GAAWxkB,KAAKqW,SACzBk5C,EAAMpoD,EAAA3E,KAAKoB,iBAAiB5D,KAAKwtE,kBAChCxoE,EAAIC,EAAIC,EAAIC,GAAMgC,EAAA3E,KAAKe,2BAC5B,CAAC,EAAG,EAAGghB,EAAOC,GACd+qC,GAGIhrD,EAAOvE,KAAKutE,WAAWplF,cAAc,YAC3Coc,EAAKyqE,eAAe,KAAM,IAAKhqE,GAC/BT,EAAKyqE,eAAe,KAAM,IAAK/pE,GAC/BV,EAAKyqE,eAAe,KAAM,QAAS9pE,EAAKF,GACxCT,EAAKyqE,eAAe,KAAM,SAAU7pE,EAAKF,GACzCV,EAAKyqE,eAAe,KAAM,OAAQhvE,KAAK8vE,oBAAoBjwC,IACvD7/B,KAAKm5C,QAAQkD,UAAY,GAC3B93C,EAAKyqE,eAAe,KAAM,eAAgBhvE,KAAKm5C,QAAQkD,WAEzDr8C,KAAKsvE,wBAAwBn8C,OAAO5uB,EAjBpB,CAuBlBsrE,mBAAAA,CAAoBhwC,GAClB,MAAgB,kBAAZA,EAAK,GACA7/B,KAAK+vE,mBAAmBlwC,GAE1B7/B,KAAK8vE,oBAAoBjwC,EAJR,CAU1BkwC,kBAAAA,CAAmBlwC,GACjB,MAAMO,EAAQP,EAAK,GACbtoB,EAAesoB,EAAK,GACpBuvB,EAASvvB,EAAK,IAAM14B,EAAAvW,iBACnBoU,EAAIC,EAAIC,EAAIC,GAAM06B,EAAK,GACxB23B,EAAQ33B,EAAK,GACb43B,EAAQ53B,EAAK,GACb63B,EAAY73B,EAAK,GAEjBmwC,EAAA,UAAArkF,OAAqB0hF,MACpB4C,EAAKC,EAAKC,EAAKC,GAAOjpE,EAAA3E,KAAK8B,cAAc,IAC3C6C,EAAA3E,KAAKU,eAAe,CAAC8B,EAAIC,GAAKmqD,MAC9BjoD,EAAA3E,KAAKU,eAAe,CAACgC,EAAIC,GAAKiqD,MAE5BihB,EAAQC,GAAUnpE,EAAA3E,KAAKqB,8BAA8BurD,GACtDmhB,EAAS/Y,EAAQ6Y,EACjBG,EAAS/Y,EAAQ6Y,EAEjBG,EAASzwE,KAAKutE,WAAWplF,cAAc,eAC7CsoF,EAAOzB,eAAe,KAAM,KAAMgB,GAClCS,EAAOzB,eAAe,KAAM,eAAgB,kBAC5CyB,EAAOzB,eAAe,KAAM,QAASuB,GACrCE,EAAOzB,eAAe,KAAM,SAAUwB,GACtCC,EAAOzB,eAAe,KAAM,IAA5B,GAAArjF,OAAoCskF,IACpCQ,EAAOzB,eAAe,KAAM,IAA5B,GAAArjF,OAAoCukF,IAGpC,MAAM3gC,EAAMvvC,KAAKuvC,IACXi+B,EAAkBxtE,KAAKwtE,gBACvBtxB,EAAYl8C,KAAKm5C,QAAQ+C,UACzBC,EAAcn8C,KAAKm5C,QAAQgD,YAE3BqT,EAAOxvD,KAAKutE,WAAWx+E,OAAOohF,EAAMF,EAAKG,EAAMF,GAGrD,GAFAlwE,KAAKuvC,IAAMigB,EACXxvD,KAAKwtE,gBAAkBpe,EACL,IAAdsI,EAAiB,CACnB,MAAMkB,EAAWzxD,EAAA3E,KAAKC,gBAAgB29B,GACtCpgC,KAAKm5C,QAAQ+C,UAAY0c,EACzB54D,KAAKm5C,QAAQgD,YAAcyc,CAHR,CAerB,OAVA54D,KAAKguE,cAAchuE,KAAKouE,cAAc72D,IAGtCvX,KAAKuvC,IAAMA,EACXvvC,KAAKwtE,gBAAkBA,EACvBxtE,KAAKm5C,QAAQ+C,UAAYA,EACzBl8C,KAAKm5C,QAAQgD,YAAcA,EAE3Bs0B,EAAOt9C,OAAOq8B,EAAKkhB,WAAW,IAC9B1wE,KAAKwvE,KAAKr8C,OAAOs9C,GACV,QAAP9kF,OAAeqkF,EAAS,IAlDD,CAwDzBF,mBAAAA,CAAoBjwC,GAIlB,OAHoB,kBAATA,IACTA,EAAO7/B,KAAKwU,KAAK7lB,IAAIkxC,IAEfA,EAAK,IACX,IAAK,cACH,MAAM8wC,EAAA,UAAAhlF,OAAsB0hF,KACtBuD,EAAa/wC,EAAK,GACxB,IAAIgxC,EAEJ,OAAQhxC,EAAK,IACX,IAAK,QACH,MAAMixC,EAASjxC,EAAK,GACdkxC,EAASlxC,EAAK,GACpBgxC,EAAW7wE,KAAKutE,WAAWplF,cAAc,sBACzC0oF,EAAS7B,eAAe,KAAM,KAAM2B,GACpCE,EAAS7B,eAAe,KAAM,gBAAiB,kBAC/C6B,EAAS7B,eAAe,KAAM,KAAM8B,EAAO,IAC3CD,EAAS7B,eAAe,KAAM,KAAM8B,EAAO,IAC3CD,EAAS7B,eAAe,KAAM,KAAM+B,EAAO,IAC3CF,EAAS7B,eAAe,KAAM,KAAM+B,EAAO,IAC3C,MACF,IAAK,SACH,MAAMC,EAAanxC,EAAK,GAClBoxC,EAAcpxC,EAAK,GACnBqxC,EAAcrxC,EAAK,GACnBsxC,EAAetxC,EAAK,GAC1BgxC,EAAW7wE,KAAKutE,WAAWplF,cAAc,sBACzC0oF,EAAS7B,eAAe,KAAM,KAAM2B,GACpCE,EAAS7B,eAAe,KAAM,gBAAiB,kBAC/C6B,EAAS7B,eAAe,KAAM,KAAMiC,EAAY,IAChDJ,EAAS7B,eAAe,KAAM,KAAMiC,EAAY,IAChDJ,EAAS7B,eAAe,KAAM,IAAKmC,GACnCN,EAAS7B,eAAe,KAAM,KAAMgC,EAAW,IAC/CH,EAAS7B,eAAe,KAAM,KAAMgC,EAAW,IAC/CH,EAAS7B,eAAe,KAAM,KAAMkC,GACpC,MACF,QACE,MAAM,IAAIjnF,MAAJ,6BAAA0B,OAAuCk0C,EAAK,KAEtD,IAAK,MAAMm0B,KAAa4c,EAAY,CAClC,MAAMQ,EAAOpxE,KAAKutE,WAAWplF,cAAc,YAC3CipF,EAAKpC,eAAe,KAAM,SAAUhb,EAAU,IAC9Cod,EAAKpC,eAAe,KAAM,aAAchb,EAAU,IAClD6c,EAAS19C,OAAOi+C,EAJkB,CAOpC,OADApxE,KAAKwvE,KAAKr8C,OAAO09C,GACV,QAAPllF,OAAeglF,EAAU,KAC3B,IAAK,OAEH,OADA,EAAAxpE,EAAA5d,MAAK,8BACE,KACT,IAAK,QACH,MAAO,UACT,QACE,MAAM,IAAIU,MAAJ,oBAAA0B,OAA8Bk0C,EAAK,KAtDrB,CA0D1B1lC,OAAAA,CAAQ8tD,EAAWC,GACjBloD,KAAKm5C,QAAQ8O,UAAYA,EACzBjoD,KAAKm5C,QAAQ+O,UAAYA,CAFG,CAK9B9oD,aAAAA,CAAcmrD,EAAK1qB,GACjB,MAAMsZ,EAAUn5C,KAAKm5C,QACrB,IAAIjsB,EAAIisB,EAAQjsB,EACdC,EAAIgsB,EAAQhsB,EACV7pB,EAAI,GACJ2C,EAAI,EAER,IAAK,MAAM8sD,KAAMxI,EACf,OAAa,EAALwI,GACN,KAAK5rD,EAAAtN,IAAImB,UACPkyB,EAAI2S,EAAK55B,KACTknB,EAAI0S,EAAK55B,KACT,MAEM2kD,EAAK19B,EAFG2S,EAAK55B,KAGb4kD,EAAK19B,EAFI0S,EAAK55B,KAGpB3C,EAAElT,KACA,IACA48E,EAAG9/C,GACH8/C,EAAG7/C,GACH,IACA6/C,EAAGpiB,GACHoiB,EAAG7/C,GACH,IACA6/C,EAAGpiB,GACHoiB,EAAGniB,GACH,IACAmiB,EAAG9/C,GACH8/C,EAAGniB,GACH,KAEF,MACF,KAAK1jD,EAAAtN,IAAIa,OACPwyB,EAAI2S,EAAK55B,KACTknB,EAAI0S,EAAK55B,KACT3C,EAAElT,KAAK,IAAK48E,EAAG9/C,GAAI8/C,EAAG7/C,IACtB,MACF,KAAKhmB,EAAAtN,IAAIc,OACPuyB,EAAI2S,EAAK55B,KACTknB,EAAI0S,EAAK55B,KACT3C,EAAElT,KAAK,IAAK48E,EAAG9/C,GAAI8/C,EAAG7/C,IACtB,MACF,KAAKhmB,EAAAtN,IAAIe,QACPsyB,EAAI2S,EAAK55B,EAAI,GACbknB,EAAI0S,EAAK55B,EAAI,GACb3C,EAAElT,KACA,IACA48E,EAAGntC,EAAK55B,IACR+mE,EAAGntC,EAAK55B,EAAI,IACZ+mE,EAAGntC,EAAK55B,EAAI,IACZ+mE,EAAGntC,EAAK55B,EAAI,IACZ+mE,EAAG9/C,GACH8/C,EAAG7/C,IAELlnB,GAAK,EACL,MACF,KAAKkB,EAAAtN,IAAIgB,SACPyI,EAAElT,KACA,IACA48E,EAAG9/C,GACH8/C,EAAG7/C,GACH6/C,EAAGntC,EAAK55B,IACR+mE,EAAGntC,EAAK55B,EAAI,IACZ+mE,EAAGntC,EAAK55B,EAAI,IACZ+mE,EAAGntC,EAAK55B,EAAI,KAEdinB,EAAI2S,EAAK55B,EAAI,GACbknB,EAAI0S,EAAK55B,EAAI,GACbA,GAAK,EACL,MACF,KAAKkB,EAAAtN,IAAIiB,SACPoyB,EAAI2S,EAAK55B,EAAI,GACbknB,EAAI0S,EAAK55B,EAAI,GACb3C,EAAElT,KAAK,IAAK48E,EAAGntC,EAAK55B,IAAK+mE,EAAGntC,EAAK55B,EAAI,IAAK+mE,EAAG9/C,GAAI8/C,EAAG7/C,GAAI6/C,EAAG9/C,GAAI8/C,EAAG7/C,IAClElnB,GAAK,EACL,MACF,KAAKkB,EAAAtN,IAAIkB,UACPuI,EAAElT,KAAK,KAKbkT,EAAIA,EAAE1W,KAAK,KAGTusD,EAAQgS,MACRZ,EAAIl/D,OAAS,GACbk/D,EAAI,KAAOpjD,EAAAtN,IAAImB,WACfuvD,EAAI,KAAOpjD,EAAAtN,IAAIa,OAKf4I,EAAI61C,EAAQgS,KAAKkmB,eAAe,KAAM,KAAO/tE,GAE7C61C,EAAQgS,KAAOnrD,KAAKutE,WAAWplF,cAAc,YAC7C6X,KAAKsvE,wBAAwBn8C,OAAOgmB,EAAQgS,OAG9ChS,EAAQgS,KAAK6jB,eAAe,KAAM,IAAK1rE,GACvC61C,EAAQgS,KAAK6jB,eAAe,KAAM,OAAQ,QAI1C71B,EAAQje,QAAUie,EAAQgS,KAC1BhS,EAAQyD,gBAAgB1vB,EAAGC,EAzGJ,CA4GzB1xB,OAAAA,GACE,MAAM09C,EAAUn5C,KAAKm5C,QAKrB,GAFAA,EAAQgS,KAAO,MAEVnrD,KAAKyjD,YACR,OAEF,IAAKtK,EAAQje,QAEX,YADAl7B,KAAKyjD,YAAc,MAKrB,MAAM6tB,EAAA,WAAA3lF,OAAoBwhF,KACpBoE,EAAWvxE,KAAKutE,WAAWplF,cAAc,gBAC/CopF,EAASvC,eAAe,KAAM,KAAMsC,GACpCC,EAASvC,eAAe,KAAM,YAAa/B,EAAGjtE,KAAKwtE,kBAGnD,MAAMgE,EAAcr4B,EAAQje,QAAQu2C,WAAU,GAU9C,GATyB,YAArBzxE,KAAKyjD,YACP+tB,EAAYxC,eAAe,KAAM,YAAa,WAE9CwC,EAAYxC,eAAe,KAAM,YAAa,WAEhDhvE,KAAKyjD,YAAc,KACnB8tB,EAASp+C,OAAOq+C,GAChBxxE,KAAKwvE,KAAKr8C,OAAOo+C,GAEbp4B,EAAQ0zB,cAAe,CAGzB1zB,EAAQ2zB,UAAY,KACpB,IAAK,MAAM59B,KAAQlvC,KAAK0tE,WACtBx+B,EAAK49B,UAAY,KAGnByE,EAASvC,eAAe,KAAM,YAAa71B,EAAQ0zB,cAR1B,CAU3B1zB,EAAQ0zB,cAAR,QAAAlhF,OAAgC2lF,EAAO,KAEvCtxE,KAAK+tE,KAAO,IA3CJ,CA8CVrlF,IAAAA,CAAKhC,GACHsZ,KAAKyjD,YAAc/8D,CADV,CAIXqU,SAAAA,GACE,MAAMo+C,EAAUn5C,KAAKm5C,QACrB,GAAIA,EAAQgS,KAAM,CAChB,MAAM7nD,EAAA,GAAA3X,OAAOwtD,EAAQgS,KAAKkmB,eAAe,KAAM,KAAK,KACpDl4B,EAAQgS,KAAK6jB,eAAe,KAAM,IAAK1rE,EAFvB,CAFR,CAQZtH,UAAAA,CAAW0/C,GACT17C,KAAKm5C,QAAQuC,SAAWA,CADN,CAIpBv/C,WAAAA,CAAY8/C,GACVj8C,KAAKm5C,QAAQ8C,SAAWA,CADJ,CAItB//C,oBAAAA,CAAqB8/C,GACnBh8C,KAAKm5C,QAAQ6C,kBAAoBA,CADK,CAIxCjgD,SAAAA,CAAUiZ,GACRhV,KAAKm5C,QAAQ4C,WAAa/mC,EAAQ,GADnB,CAIjB5a,kBAAAA,CAAmBob,GAAS,CAI5Bnb,WAAAA,CAAY8tD,GAAW,CAIvB7tD,SAAAA,CAAU8tD,GACR,IAAK,MAAOp5D,EAAKC,KAAUm5D,EACzB,OAAQp5D,GACN,IAAK,KACHgR,KAAKjG,aAAa9K,GAClB,MACF,IAAK,KACH+Q,KAAKhG,WAAW/K,GAChB,MACF,IAAK,KACH+Q,KAAK/F,YAAYhL,GACjB,MACF,IAAK,KACH+Q,KAAK9F,cAAcjL,GACnB,MACF,IAAK,IACH+Q,KAAK7F,QAAQlL,EAAM,GAAIA,EAAM,IAC7B,MACF,IAAK,KACH+Q,KAAK5F,mBAAmBnL,GACxB,MACF,IAAK,KACH+Q,KAAK3F,YAAYpL,GACjB,MACF,IAAK,OACH+Q,KAAK/D,QAAQhN,GACb,MACF,IAAK,KACH+Q,KAAK2vE,eAAe1gF,GACpB,MACF,IAAK,KACH+Q,KAAK4vE,aAAa3gF,GAClB,MACF,SACE,EAAAkY,EAAA5d,MAAA,wCAAAoC,OAA6CqD,IAlCnC,CAwClBmM,IAAAA,GACE,MAAMg+C,EAAUn5C,KAAKm5C,QACjBA,EAAQje,UACVie,EAAQje,QAAQ8zC,eAAe,KAAM,OAAQ71B,EAAQ+C,WACrD/C,EAAQje,QAAQ8zC,eAAe,KAAM,eAAgB71B,EAAQkD,WAC7Dr8C,KAAKvE,UALF,CASPR,MAAAA,GACE,MAAMk+C,EAAUn5C,KAAKm5C,QACjBA,EAAQje,UACVl7B,KAAKqvE,qBAAqBl2B,EAAQje,SAClCie,EAAQje,QAAQ8zC,eAAe,KAAM,OAAQ,QAC7ChvE,KAAKvE,UALA,CAYT4zE,oBAAAA,CAAqBn0C,GAA6B,IAApBk0C,EAAAhkF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,EAC7C,MAAM+tD,EAAUn5C,KAAKm5C,QACrB,IAAI8O,EAAY9O,EAAQ8O,UACD,IAAnBmnB,GAAwBnnB,EAAU58D,OAAS,IAC7C48D,EAAYA,EAAUr5D,KAAI,SAAUK,GAClC,OAAOmgF,EAAiBngF,CADiB,KAI7CisC,EAAQ8zC,eAAe,KAAM,SAAU71B,EAAQgD,aAC/CjhB,EAAQ8zC,eAAe,KAAM,iBAAkB71B,EAAQmD,aACvDphB,EAAQ8zC,eAAe,KAAM,oBAAqBhC,EAAG7zB,EAAQwH,aAC7DzlB,EAAQ8zC,eAAe,KAAM,iBAAkB71B,EAAQsH,SACvDvlB,EAAQ8zC,eAAe,KAAM,kBAAmB71B,EAAQuH,UACxDxlB,EAAQ8zC,eACN,KACA,eACAhC,EAAGoC,EAAiBj2B,EAAQoD,WAAa,MAE3CrhB,EAAQ8zC,eACN,KACA,mBACA/mB,EAAUr5D,IAAIo+E,GAAIpgF,KAAK,MAEzBsuC,EAAQ8zC,eACN,KACA,oBACAhC,EAAGoC,EAAiBj2B,EAAQ+O,WAAa,KA1BK,CA8BlD9sD,MAAAA,GAAS,IAAAs2E,EACP,QAAAA,EAAA1xE,KAAKm5C,QAAQje,eAAb,IAAAw2C,GAAAA,EAAsB1C,eAAe,KAAM,YAAa,WACxDhvE,KAAK7E,MAFE,CAKTE,UAAAA,GAGE2E,KAAK/E,SACL+E,KAAK7E,MAJM,CAObG,YAAAA,GAAe,IAAAq2E,EACb,QAAAA,EAAA3xE,KAAKm5C,QAAQje,eAAb,IAAAy2C,GAAAA,EAAsB3C,eAAe,KAAM,YAAa,WACxDhvE,KAAK3E,YAFQ,CAKfH,WAAAA,GACE8E,KAAKjF,YACLiF,KAAK/E,QAFO,CAKdM,eAAAA,GACEyE,KAAKjF,YACLiF,KAAK3E,YAFW,CAKlBG,iBAAAA,GACEwE,KAAKjF,YACLiF,KAAK1E,cAFa,CAKpB6D,wBAAAA,GACE,MAAMoF,EAAOvE,KAAKutE,WAAWplF,cAAc,YAC3Coc,EAAKyqE,eAAe,KAAM,IAAK,KAC/BzqE,EAAKyqE,eAAe,KAAM,IAAK,KAC/BzqE,EAAKyqE,eAAe,KAAM,QAAS,OACnCzqE,EAAKyqE,eAAe,KAAM,SAAU,OACpCzqE,EAAKyqE,eAAe,KAAM,OAAQhvE,KAAKm5C,QAAQ+C,WAE/Cl8C,KAAKsvE,wBAAwBn8C,OAAO5uB,EARX,CAW3BzF,iBAAAA,CAAkB+mB,GAChB,MAAMm4B,EAAUh+C,KAAK+kD,UAAUl/B,GAC1Bm4B,EAILh+C,KAAKjB,wBAAwBi/C,IAH3B,EAAA72C,EAAA5d,MAAA,kCAAAoC,OAAuCk6B,EAAM,qBAHxB,CASzB9mB,uBAAAA,CAAwBi/C,EAASuB,GAC/B,MAAMh7B,EAAQy5B,EAAQz5B,MAChBC,EAASw5B,EAAQx5B,OAEjBotD,EAAS7G,EAAoB/sB,EAASh+C,KAAK0qE,kBAAmBnrB,GAC9DsyB,EAAW7xE,KAAKutE,WAAWplF,cAAc,YAC/C0pF,EAAS7C,eAAe,KAAM,IAAK,KACnC6C,EAAS7C,eAAe,KAAM,IAAK,KACnC6C,EAAS7C,eAAe,KAAM,QAAShC,EAAGzoD,IAC1CstD,EAAS7C,eAAe,KAAM,SAAUhC,EAAGxoD,IAC3CxkB,KAAKm5C,QAAQje,QAAU22C,EACvB7xE,KAAKtX,KAAK,WAEV,MAAMopF,EAAQ9xE,KAAKutE,WAAWplF,cAAc,aAC5C2pF,EAAM9C,eAt/CO,+BAs/CkB,aAAc4C,GAC7CE,EAAM9C,eAAe,KAAM,IAAK,KAChC8C,EAAM9C,eAAe,KAAM,IAAKhC,GAAIxoD,IACpCstD,EAAM9C,eAAe,KAAM,QAAShC,EAAGzoD,GAAS,MAChDutD,EAAM9C,eAAe,KAAM,SAAUhC,EAAGxoD,GAAU,MAClDstD,EAAM9C,eACJ,KACA,YAFF,SAAArjF,OAGWqhF,EAAG,EAAIzoD,GAAO,KAAA54B,OAAGqhF,GAAI,EAAIxoD,GAAQ,MAExC+6B,EACFA,EAAKpsB,OAAO2+C,GAEZ9xE,KAAKsvE,wBAAwBn8C,OAAO2+C,EA3BD,CA+BvClzE,qBAAAA,CAAsBwnD,GACpB,MAAMpI,EAAUh+C,KAAK+kD,UAAUqB,EAAIv/C,KAAMu/C,GACzC,GAAIpI,EAAQ15B,OAKV,YAJA,EAAAnd,EAAA5d,MACE,0IAKJ,MAAM4vD,EAAUn5C,KAAKm5C,QACf50B,EAAQy5B,EAAQz5B,MAChBC,EAASw5B,EAAQx5B,OACjB03B,EAAY/C,EAAQ+C,UAE1B/C,EAAQ4zB,OAAR,OAAAphF,OAAwByhF,KACxB,MAAM7tB,EAAOv/C,KAAKutE,WAAWplF,cAAc,YAC3Co3D,EAAKyvB,eAAe,KAAM,KAAM71B,EAAQ4zB,QAExC,MAAMxoE,EAAOvE,KAAKutE,WAAWplF,cAAc,YAC3Coc,EAAKyqE,eAAe,KAAM,IAAK,KAC/BzqE,EAAKyqE,eAAe,KAAM,IAAK,KAC/BzqE,EAAKyqE,eAAe,KAAM,QAAShC,EAAGzoD,IACtChgB,EAAKyqE,eAAe,KAAM,SAAUhC,EAAGxoD,IACvCjgB,EAAKyqE,eAAe,KAAM,OAAQ9yB,GAClC33C,EAAKyqE,eAAe,KAAM,OAA1B,QAAArjF,OAA0CwtD,EAAQ4zB,OAAO,MAEzD/sE,KAAKwvE,KAAKr8C,OAAOosB,GACjBv/C,KAAKsvE,wBAAwBn8C,OAAO5uB,GAEpCvE,KAAKjB,wBAAwBi/C,EAASuB,EA7Bb,CAgC3BjhD,qBAAAA,CAAsB8wD,EAAQI,GAY5B,GAXIppE,MAAMC,QAAQ+oE,IAA6B,IAAlBA,EAAO/jE,QAClC2U,KAAKvF,UACH20D,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,IAIPI,EAAM,CACR,MAAMjrC,EAAQirC,EAAK,GAAKA,EAAK,GACvBhrC,EAASgrC,EAAK,GAAKA,EAAK,GAExBqiB,EAAW7xE,KAAKutE,WAAWplF,cAAc,YAC/C0pF,EAAS7C,eAAe,KAAM,IAAKxf,EAAK,IACxCqiB,EAAS7C,eAAe,KAAM,IAAKxf,EAAK,IACxCqiB,EAAS7C,eAAe,KAAM,QAAShC,EAAGzoD,IAC1CstD,EAAS7C,eAAe,KAAM,SAAUhC,EAAGxoD,IAC3CxkB,KAAKm5C,QAAQje,QAAU22C,EACvB7xE,KAAKtX,KAAK,WACVsX,KAAKvE,SAXG,CAZwB,CA2BpC8C,mBAAAA,GAAuB,CAKvBigB,WAAAA,CAAYnI,GACV,MAAMk5B,EAAMvvC,KAAKutE,WAAWx+E,OAAOsnB,EAASkO,MAAOlO,EAASmO,QAGtDutD,EAAc/xE,KAAKutE,WAAWplF,cAAc,YAClDonD,EAAIpc,OAAO4+C,GACX/xE,KAAKwvE,KAAOuC,EAIZ,MAAMC,EAAYhyE,KAAKutE,WAAWplF,cAAc,SAShD,OARA6pF,EAAUhD,eAAe,KAAM,YAAa/B,EAAG52D,EAAS5b,YACxD80C,EAAIpc,OAAO6+C,GAKXhyE,KAAKuvC,IAAMyiC,EAEJziC,CAnBa,CAyBtB0iC,gBAAAA,GACE,IAAKjyE,KAAKm5C,QAAQ2zB,UAAW,CAC3B,MAAMA,EAAY9sE,KAAKutE,WAAWplF,cAAc,SAChD2kF,EAAUkC,eAAe,KAAM,YAAahvE,KAAKm5C,QAAQ0zB,eACzD7sE,KAAKuvC,IAAIpc,OAAO25C,GAChB9sE,KAAKm5C,QAAQ2zB,UAAYA,CAJE,CAM7B,OAAO9sE,KAAKm5C,QAAQ2zB,SAPH,CAanBwC,qBAAAA,GAUE,OATKtvE,KAAK+tE,OACR/tE,KAAK+tE,KAAO/tE,KAAKutE,WAAWplF,cAAc,SAC1C6X,KAAK+tE,KAAKiB,eAAe,KAAM,YAAa/B,EAAGjtE,KAAKwtE,kBAChDxtE,KAAKm5C,QAAQ0zB,cACf7sE,KAAKiyE,mBAAmB9+C,OAAOnzB,KAAK+tE,MAEpC/tE,KAAKuvC,IAAIpc,OAAOnzB,KAAK+tE,OAGlB/tE,KAAK+tE,IAVU,8ECpoD1B,MAAM9zD,EAUJ,kBAAO7xB,CAAY4xB,GACjB,MAAMF,EAAQ,GACRyyD,EAAS,CACbzyD,QACAO,OAAQvrB,OAAOC,OAAO,OA8BxB,OA5BA,SAASmjF,EAAK7F,GAAM,IAAA8F,EAClB,IAAK9F,EACH,OAEF,IAAIn+E,EAAM,KACV,MAAM1H,EAAO6lF,EAAK7lF,KAClB,GAAa,UAATA,EACF0H,EAAMm+E,EAAKp9E,UACN,KAAKgrB,EAAQm4D,gBAAgB5rF,GAClC,OACS,OAAA6lF,QAAA,IAAAA,GAAA,QAAA8F,EAAA9F,EAAMzhC,kBAAN,IAAAunC,GAAAA,EAAkB/pF,YAC3B8F,EAAMm+E,EAAKzhC,WAAWxiD,YACbikF,EAAKp9E,QACdf,EAAMm+E,EAAKp9E,MADU,CAQvB,GALY,OAARf,GACF4rB,EAAM1pB,KAAK,CACTlC,QAGCm+E,EAAKt2D,SAGV,IAAK,MAAMs8D,KAAShG,EAAKt2D,SACvBm8D,EAAKG,EAxBW,CA2BpBH,CAAKl4D,GACEuyD,CAlCe,CA2CxB,sBAAO6F,CAAgB5rF,GACrB,QACW,aAATA,GACS,UAATA,GACS,WAATA,GACS,WAATA,EALyB,EAtE/BR,EAAAi0B,QAAAA,6GCycA,SAAyB5M,GAGpBA,EAAOilE,oBACPjlE,EAAOjlB,cAAeilB,EAAOklE,qBAE9B,EAAAjrE,EAAA2J,YACE,2IAGF5D,EAAOilE,kBAAoBjlE,EAAOjlB,aAAeilB,EAAOklE,mBAGxD,MAAM,UAAE5uC,EAAF,SAAattB,GAAahJ,EAC1B/kB,EAAQgmC,iBAAiBqV,GACzBoG,EAAazhD,EAAMmmC,iBAAiB,cACpC+jD,EAAchkD,WAAWlmC,EAAMmmC,iBAAiB,mBAGrC,YAAfsb,KACEyoC,GAAenlF,KAAK0Y,IAAIysE,EAAcn8D,EAASrB,OAAS,OAE1D1rB,QAAQa,MACN,2JAMN,MAAMqf,EAAO,IAAIipE,EAAoBplE,GAErC,OADA7D,EAAKkpE,UACElpE,CA/BwB,oBAsCjC,SAAAmpE,GAQG,IARsB,UACvBhvC,EADuB,SAEvBttB,EAFuB,SAGvBu8D,EAHuB,kBAIvBC,EAJuB,2BAKvBnxE,EALuB,WAMvBwpC,GAAa,EANU,YAOvB4nC,GAAc,GAPhBH,EAaE,GAJIznC,IACF,EAAA5jC,EAAAyrE,oBAAmBpvC,EAAW,CAAE1uB,SAAUoB,EAASpB,WAGjD69D,EAAa,CACf,MAAM72C,EAAM+2C,EAAO,EAAGtxE,GAEhB2L,EAAS,CACb4lE,aAAc,KACdC,eAAgB,KAChBlnD,IAAK,KACLhX,MALYqB,EAASrB,OAASlqB,WAAWi4D,kBAAoB,GAM7DhD,WAAY,KACZ9jB,OAEF,IAAK,MAAMjQ,KAAO4mD,EAChBvlE,EAAO0yC,WAAa8yB,EAAkBlkF,IAAIq9B,GAC1C3e,EAAO2e,IAAMA,EACbmnD,EAAO9lE,EAdM,CALhB,EAreH,IAAAlG,EAAAC,EAAA,GAMAE,EAAAF,EAAA,GA6CA,MACMgsE,EAAoB,GACpBC,EAAsB,GACtBC,EAAc,IAAIjlF,IAExB,SAAS2kF,EAAOn5D,EAAMnY,GACpB,IAAIu6B,EACJ,GAAIv6B,GAA8ByF,EAAA/F,YAAYM,2BAC5Cu6B,EAAM,IAAIt6B,gBAAgBkY,EAAMA,GAAMqiB,WAAW,KAAM,CAAE+kB,OAAO,QAC3D,CACL,MAAM56B,EAASr+B,SAASG,cAAc,UACtCk+B,EAAO9B,MAAQ8B,EAAO7B,OAAS3K,EAC/BoiB,EAAM5V,EAAO6V,WAAW,KAAM,CAAE+kB,OAAO,GAHlC,CAMP,OAAOhlB,CAVyC,CAkFlD,SAASs3C,EAAW/pE,EAAMgqE,EAAMn5D,GAE9B,MAAMo5D,EAAUzrF,SAASG,cAAc,QACjC0qF,EAAoB,CACxBj8C,MAAO,EACPw5B,YAAa,EACbsjB,QAAsB,KAAbF,EAAKtlF,IACdylF,OAAQH,EAAKG,OACbt4B,SAAU,GAEZ7xC,EAAKoqE,UAAUxjF,KAAKqjF,GAEpB,MAAMhjD,EAAKtpB,EAAA3E,KAAK/H,UAAU+O,EAAKqqE,WAAYL,EAAK/4E,WAChD,IAAIm8B,EAAQvpC,KAAKymF,MAAMrjD,EAAG,GAAIA,EAAG,IACjC,MAAMnoC,EAAQ+xB,EAAOm5D,EAAKO,UACtBzrF,EAAMokE,WACR91B,GAASvpC,KAAKuL,GAAK,GAErB,MAAMo7E,EAAa3mF,KAAKwsC,MAAMpJ,EAAG,GAAIA,EAAG,IAClCwjD,EACJD,EAzFJ,SAAmBh8B,EAAYt2C,GAC7B,MAAMwyE,EAAeZ,EAAY3kF,IAAIqpD,GACrC,GAAIk8B,EACF,OAAOA,EAGT,MAAMj4C,EAAM+2C,EAAOI,EAAmB1xE,GAEtCu6B,EAAInY,KAAJ,GAAAn4B,OAAcynF,EAAkB,OAAAznF,OAAKqsD,GACrC,MAAMm8B,EAAUl4C,EAAI+xB,YAAY,IAGhC,IAAIomB,EAASD,EAAQE,sBACjBC,EAAUjnF,KAAK0Y,IAAIouE,EAAQI,wBAC/B,GAAIH,EAAQ,CACV,MAAMI,EAAQJ,GAAUA,EAASE,GAIjC,OAHAhB,EAAYr8D,IAAI+gC,EAAYw8B,GAE5Bv4C,EAAI5V,OAAO9B,MAAQ0X,EAAI5V,OAAO7B,OAAS,EAChCgwD,CALG,CAYZv4C,EAAIokB,YAAc,MAClBpkB,EAAI2qB,UAAU,EAAG,EAAGwsB,EAAmBA,GACvCn3C,EAAIowB,WAAW,IAAK,EAAG,GACvB,IAAIooB,EAASx4C,EAAIK,aACf,EACA,EACA82C,EACAA,GACAvsE,KACFytE,EAAU,EACV,IAAK,IAAIlnF,EAAIqnF,EAAOppF,OAAS,EAAI,EAAG+B,GAAK,EAAGA,GAAK,EAC/C,GAAIqnF,EAAOrnF,GAAK,EAAG,CACjBknF,EAAUjnF,KAAKk1D,KAAKn1D,EAAI,EAAIgmF,GAC5B,KAFiB,CASrBn3C,EAAI2qB,UAAU,EAAG,EAAGwsB,EAAmBA,GACvCn3C,EAAIowB,WAAW,IAAK,EAAG+mB,GACvBqB,EAASx4C,EAAIK,aAAa,EAAG,EAAG82C,EAAmBA,GAAmBvsE,KACtEutE,EAAS,EACT,IAAK,IAAIhnF,EAAI,EAAGa,EAAKwmF,EAAOppF,OAAQ+B,EAAIa,EAAIb,GAAK,EAC/C,GAAIqnF,EAAOrnF,GAAK,EAAG,CACjBgnF,EAAShB,EAAoB/lF,KAAKC,MAAMF,EAAI,EAAIgmF,GAChD,KAFiB,CAQrB,GAFAn3C,EAAI5V,OAAO9B,MAAQ0X,EAAI5V,OAAO7B,OAAS,EAEnC4vD,EAAQ,CACV,MAAMI,EAAQJ,GAAUA,EAASE,GAEjC,OADAhB,EAAYr8D,IAAI+gC,EAAYw8B,GACrBA,CAHG,CAOZ,OADAlB,EAAYr8D,IAAI+gC,EAAYq7B,GACrBA,CAlEkD,CAyF1CqB,CAAUpsF,EAAM0vD,WAAYxuC,EAAKmrE,6BAEhD,IAAIljD,EAAMhpC,EACI,IAAVmuC,GACFnF,EAAOhB,EAAG,GACVhoC,EAAMgoC,EAAG,GAAKwjD,IAEdxiD,EAAOhB,EAAG,GAAKwjD,EAAa5mF,KAAKunF,IAAIh+C,GACrCnuC,EAAMgoC,EAAG,GAAKwjD,EAAa5mF,KAAKwnF,IAAIj+C,IAGtC,MAAMk+C,EAAiB,4BACjBC,EAAWtB,EAAQnrF,MAGrBkhB,EAAKo5B,aAAep5B,EAAKwrE,gBAC3BD,EAAStjD,KAAT,GAAA9lC,QAAqB,IAAM8lC,EAAQjoB,EAAKyrE,YAAYvjD,QAAQ,GAAG,KAC/DqjD,EAAStsF,IAAT,GAAAkD,QAAoB,IAAMlD,EAAO+gB,EAAK0rE,aAAaxjD,QAAQ,GAAG,OAG9DqjD,EAAStjD,KAAT,GAAA9lC,OAAmBmpF,GAAHnpF,OAAoB8lC,EAAKC,QAAQ,GAAG,OACpDqjD,EAAStsF,IAAT,GAAAkD,OAAkBmpF,GAAHnpF,OAAoBlD,EAAIipC,QAAQ,GAAG,QAEpDqjD,EAAS15B,SAAT,GAAA1vD,OAAuBmpF,GAAHnpF,OAAoBqoF,EAAWtiD,QAAQ,GAAG,OAC9DqjD,EAAS/8B,WAAa1vD,EAAM0vD,WAE5B66B,EAAkBx3B,SAAW24B,EAG7BP,EAAQ5gD,aAAa,OAAQ,gBAE7B4gD,EAAQrrF,YAAcorF,EAAKtlF,IAE3BulF,EAAQ0B,IAAM3B,EAAK2B,IAIf3rE,EAAK4rE,wBACP3B,EAAQ4B,QAAQtB,SAAWP,EAAKO,UAEpB,IAAVn9C,IACFi8C,EAAkBj8C,MAAQA,GAAS,IAAMvpC,KAAKuL,KAKhD,IAAI08E,GAAkB,EACtB,GAAI9B,EAAKtlF,IAAI7C,OAAS,EACpBiqF,GAAkB,OACb,GAAiB,MAAb9B,EAAKtlF,KAAeslF,EAAK/4E,UAAU,KAAO+4E,EAAK/4E,UAAU,GAAI,CACtE,MAAM86E,EAAYloF,KAAK0Y,IAAIytE,EAAK/4E,UAAU,IACxC+6E,EAAYnoF,KAAK0Y,IAAIytE,EAAK/4E,UAAU,IAIpC86E,IAAcC,GACdnoF,KAAKsW,IAAI4xE,EAAWC,GAAanoF,KAAKkT,IAAIg1E,EAAWC,GAAa,MAElEF,GAAkB,EATkD,CAYpEA,IACFzC,EAAkBziB,YAAc9nE,EAAMokE,SAAW8mB,EAAKhvD,OAASgvD,EAAKjvD,OAEtE/a,EAAKisE,mBAAmBx+D,IAAIw8D,EAASZ,GACjCrpE,EAAKksE,mBACPlsE,EAAKmsE,YAAYlC,EAtFmB,CA0FxC,SAASN,EAAO9lE,GACd,MAAM,IAAE2e,EAAF,MAAOhX,EAAP,WAAc+qC,EAAd,IAA0B9jB,EAA1B,aAA+Bg3C,EAA/B,eAA6CC,GAAmB7lE,GAChE,MAAE/kB,GAAU0jC,EAClB,IAAIvxB,EAAY,GAChB,GAA+B,IAA3BslD,EAAWqQ,aAAqBrQ,EAAW2zB,QAAS,CACtD,MAAM,WAAE17B,GAAe1vD,GACjB,YAAE8nE,EAAF,SAAe/U,GAAa0E,EAE9BkzB,IAAiB53B,GAAY63B,IAAmBl7B,IAClD/b,EAAInY,KAAJ,GAAAn4B,OAAc0vD,EAAWrmC,EAAM,OAAArpB,OAAKqsD,GACpC3qC,EAAO4lE,aAAe53B,EACtBhuC,EAAO6lE,eAAiBl7B,GAI1B,MAAM,MAAEzzB,GAAU0X,EAAI+xB,YAAYhiC,EAAI5jC,aAElCm8B,EAAQ,IACV9pB,EAAA,UAAA9O,OAAuBykE,EAAcp7C,EAASuP,EAAM,KAdA,CAiB/B,IAArBw7B,EAAWnpB,QACbn8B,EAAA,UAAA9O,OAAsBo0D,EAAWnpB,MAAM,SAAAjrC,OAAO8O,IAE5CA,EAAUpP,OAAS,IACrB/C,EAAMmS,UAAYA,EAzBE,CAoDxB,MAAMg4E,EACJxyE,WAAAA,CAAA21E,GAQG,IAAAC,EAAA,IARS,kBACVvD,EADU,UAEV3uC,EAFU,SAGVttB,EAHU,SAIVu8D,EAJU,kBAKVC,EALU,oBAMViD,EANU,2BAOVp0E,GAPFk0E,EASE51E,KAAK+1E,mBAAqBzD,EAC1BtyE,KAAK01E,kBAAoBpD,aAA6BlW,eACtDp8D,KAAK4iC,WAAa5iC,KAAKg1E,eAAiBrxC,EACxC3jC,KAAK4zE,UAAYhB,GAAY,GAC7B5yE,KAAKg2E,qBAAuBF,GAAuB,GACnD91E,KAAK20E,4BAA8BjzE,EACnC1B,KAAKo1E,wBAA0B,QAADS,EAAC/qF,WAAW84B,qBAAX,IAAAiyD,IAAAA,EAA0BhyD,SAEzD7jB,KAAKwiE,QAAU,KACfxiE,KAAKy1E,mBAAqB5C,GAAqB,IAAIvsE,QACnDtG,KAAKi2E,WAAY,EACjBj2E,KAAKsO,YAAc,IAAInH,EAAAZ,kBACvBvG,KAAKk2E,kBAAoB,CACvBjD,aAAc,KACdC,eAAgB,KAChBlnD,IAAK,KACLhX,MAAOqB,EAASrB,OAASlqB,WAAWi4D,kBAAoB,GACxDhD,WAAY,KACZ9jB,IAAK+2C,EAAO,EAAGtxE,IAEjB,MAAM,UAAE+qB,EAAF,WAAaC,EAAb,MAAyBC,EAAzB,MAAgCC,GAAUvW,EAASmW,QACzDxsB,KAAK6zE,WAAa,CAAC,EAAG,EAAG,GAAI,GAAIlnD,EAAOC,EAAQF,GAChD1sB,KAAKi1E,WAAaxoD,EAClBzsB,KAAKk1E,YAAcxoD,GAEnB,EAAAplB,EAAAyrE,oBAAmBpvC,EAAWttB,GAG9BrW,KAAKsO,YAAY7H,QACdyd,SAAQ,KACPlkB,KAAKk2E,kBAAoB,IAAzB,IAED7nE,OAAM,QAjCR,CA0CH,WAAI5H,GACF,OAAOzG,KAAKsO,YAAY7H,OADZ,CAOdwU,MAAAA,GACEjb,KAAKi2E,WAAY,EACbj2E,KAAKwiE,UACPxiE,KAAKwiE,QACFvnD,OAAO,IAAI9T,EAAAhG,eAAe,8BAC1BkN,OAAM,SAGTrO,KAAKwiE,QAAU,MAEjBxiE,KAAKsO,YAAY1H,OAAO,IAAIO,EAAAhG,eAAe,6BAVpC,CAgBTg1E,aAAAA,CAAcr8D,EAAOs8D,GACnB,IAAK,MAAMpnD,KAAQlV,EACjB,QAAiBxuB,IAAb0jC,EAAK9gC,IAiBT8R,KAAKg2E,qBAAqB5lF,KAAK4+B,EAAK9gC,KACpCqlF,EAAWvzE,KAAMgvB,EAAMonD,QAjBrB,GACgB,4BAAdpnD,EAAKtoC,MACS,uBAAdsoC,EAAKtoC,KACL,CACA,MAAMgkC,EAAS1qB,KAAK4iC,WACpB5iC,KAAK4iC,WAAa56C,SAASG,cAAc,QACzC6X,KAAK4iC,WAAWzT,UAAUxW,IAAI,iBACd,OAAZqW,EAAK/c,IACPjS,KAAK4iC,WAAW/P,aAAa,KAA7B,GAAAlnC,OAAsCqjC,EAAK/c,KAE7CyY,EAAOyI,OAAOnzB,KAAK4iC,WAPnB,KAQuB,qBAAd5T,EAAKtoC,OACdsZ,KAAK4iC,WAAa5iC,KAAK4iC,WAAWrI,WAfT,CA2BjCo7C,WAAAA,CAAYlC,GACV,MAAMZ,EAAqB7yE,KAAKk2E,kBAAkBn2B,WAChD//C,KAAKy1E,mBAAmB9mF,IAAI8kF,GAO9B,GANAzzE,KAAKk2E,kBAAkBlqD,IAAMynD,EAC7BN,EAAOnzE,KAAKk2E,mBAERrD,EAAkBa,SACpB1zE,KAAK4iC,WAAWzP,OAAOsgD,GAErBZ,EAAkBc,OAAQ,CAC5B,MAAM0C,EAAKruF,SAASG,cAAc,MAClCkuF,EAAGxjD,aAAa,OAAQ,gBACxB7yB,KAAK4iC,WAAWzP,OAAOkjD,EAHK,CATX,CAmBrB3D,OAAAA,GACE,MAAMt6D,EAAa,IAAIjR,EAAAZ,kBACvB,IAAI6vE,EAAatnF,OAAOC,OAAO,MAE/B,GAAIiR,KAAK01E,kBAAmB,CAC1B,MAAMp7D,EAAOA,KACXta,KAAKwiE,QAAQjoD,OAAOxN,MAAKupE,IAAqB,IAApB,MAAErnF,EAAF,KAASwrB,GAAV67D,EACnB77D,EACFrC,EAAWzR,WAIb7X,OAAO4rB,OAAO07D,EAAYnnF,EAAMorB,QAChCra,KAAKm2E,cAAclnF,EAAM6qB,MAAOs8D,GAChC97D,IAAA,GACClC,EAAWxR,OATd,EAYF5G,KAAKwiE,QAAUxiE,KAAK+1E,mBAAmB37D,YACvCE,GAf0B,KAgBrB,KAAIta,KAAK+1E,mBAKd,MAAM,IAAI9rF,MAAM,+CALkB,CAClC,MAAM,MAAE6vB,EAAF,OAASO,GAAWra,KAAK+1E,mBAC/B/1E,KAAKm2E,cAAcr8D,EAAOO,GAC1BjC,EAAWzR,SAHuB,CAI7B,CAIPyR,EAAW3R,QAAQsG,MAAK,KACtBqpE,EAAa,KA5KnB,SAAgB5sE,GACd,GAAIA,EAAKysE,UACP,OAEF,MAAMrD,EAAWppE,EAAKoqE,UAChBx7D,EAAa5O,EAAK8E,YAKxB,GAJuBskE,EAASvnF,OApNF,IAyN5B+sB,EAAWzR,cADb,CAKA,IAAK6C,EAAKksE,kBACR,IAAK,MAAMjC,KAAWb,EACpBppE,EAAKmsE,YAAYlC,GAGrBr7D,EAAWzR,SAVmC,CAV1B,CA6KhBqP,CAAOhW,KAAP,GACCA,KAAKsO,YAAY1H,OA/BZ,EAlaZ5gB,EAAAysF,oBAAAA,6FCwBA,IAAAtrE,EAAAC,EAAA,GACAohB,EAAAphB,EAAA,GACAmvE,EAAAnvE,EAAA,IACAovE,EAAApvE,EAAA,IACAE,EAAAF,EAAA,GACAqvE,EAAArvE,EAAA,IAAAsvE,EAAA,IAAApwE,QAAAqwE,EAAA,IAAArwE,QAAAswE,EAAA,IAAAtwE,QAAAuwE,EAAA,IAAAvwE,QAAAwwE,EAAA,IAAAxwE,QAAAywE,EAAA,IAAAzwE,QAAA0wE,EAAA,IAAA1wE,QAAA2wE,EAAA,IAAA3wE,QAAA4wE,EAAA,IAAA5wE,QAAA2lB,EAAA,IAAA3lB,QAAA6wE,EAAA,IAAAtjE,QAuBA,MAAMujE,EA0BJn3E,WAAAA,CAAAo3E,GAQG,IARS,UACVnrD,EADU,UAEVnY,EAFU,IAGViY,EAHU,qBAIVsrD,EAJU,gBAKVC,EALU,SAMVlhE,EANU,KAOV6X,GAPFmpD,EAAApjE,4BAAA,KAAAkjE,GAAA3wE,2BAAA,KAAAkwE,OAAA,GAAAlwE,2BAAA,KAAAmwE,GAvBc,GAAdnwE,2BAAA,KAAAowE,EAEmB,MAAnBpwE,2BAAA,KAAAqwE,EAEkB72E,KAAKw3E,UAAUvzD,KAAKjkB,OAAtCwG,2BAAA,KAAAswE,EAEoB92E,KAAK4zB,YAAY3P,KAAKjkB,OAA1CwG,2BAAA,KAAAuwE,EAEW,IAAI1oF,KAAfmY,2BAAA,KAAAwwE,GAEkB,GAAlBxwE,2BAAA,KAAAywE,GAEgB,GAAhBzwE,2BAAA,KAAA0wE,GAEe,GAAf1wE,2BAAA,KAAAylB,OAAA,GAkBE,MAAMwrD,EAAc,CAAClB,EAAAmB,eAAgBlB,EAAAmB,UAAWlB,EAAAmB,aAChD,IAAKR,EAAsBS,aAAc,CACvCT,EAAsBS,cAAe,EACrC,IAAK,MAAMvqD,KAAcmqD,EACvBnqD,EAAWW,WAAWC,EAHe,CAMzChC,EAAUob,oBAAoBmwC,GAE9B3wE,sBAAAmlB,EAAAjsB,KAAkBksB,GAClBlsB,KAAK+T,UAAYA,EACjB/T,KAAKgsB,IAAMA,EACXllB,sBAAA4vE,EAAA12E,KAA6Bs3E,GAC7BxwE,sBAAA8vE,EAAA52E,KAAwBu3E,GACxBv3E,KAAKqW,SAAWA,EAEhBpP,sBAAAglB,EAAAjsB,MAAgB2nC,SAAS3nC,KAjBxB,CAoBH,WAAIswB,GACF,OAA8B,IAAvBrpB,sBAAA8vE,EAAA/2E,MAAc6Z,IADT,CAQduuB,aAAAA,CAAcJ,GACZ/gC,sBAAAglB,EAAAjsB,MAAgBooC,cAAcJ,EADZ,CAQpBD,UAAAA,GAA6C,IAAlCC,EAAA58C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAO6b,sBAAAglB,EAAAjsB,MAAgB2pC,UAChC9yB,kBAAAsgE,EAAAn3E,KAAA83E,GAAAz1E,KAAArC,MACIgoC,IAAS7gC,EAAAlV,qBAAqBI,KAEhC2N,KAAK+3E,sBAAqB,GAC1B/3E,KAAKwoC,gBAELxoC,KAAKyoC,cAGHT,IAAS7gC,EAAAlV,qBAAqBC,OAChC8N,KAAKgsB,IAAImD,UAAUC,OACjB,kBACA4Y,IAAS7gC,EAAAlV,qBAAqBE,UAEhC6N,KAAKgsB,IAAImD,UAAUC,OACjB,aACA4Y,IAAS7gC,EAAAlV,qBAAqBI,KAEhC2N,KAAKgsB,IAAImD,UAAUC,OACjB,eACA4Y,IAAS7gC,EAAAlV,qBAAqBG,OAEhC4N,KAAKgsB,IAAIkK,QAAS,EAvBuB,CA2B7C6hD,oBAAAA,CAAqBC,GACnB,GACGA,GACD/wE,sBAAAglB,EAAAjsB,MAAgB2pC,YAAcxiC,EAAAlV,qBAAqBI,IAFrD,CAOA,IAAK2lF,EAGH,IAAK,MAAMpqD,KAAU3mB,sBAAA8vE,EAAA/2E,MAAc8a,SACjC,GAAI8S,EAAO0C,UAET,YADA1C,EAAO8B,kBAMP7Y,kBAAAsgE,EAASn3E,KAAAi4E,GAAA51E,KAAArC,KACb,CAAEkV,QAAS,EAAGC,QAAS,IACJ,GAEdua,iBAnBL,CAJ+B,CA8BnCwX,eAAAA,CAAgB5Q,GACdrvB,sBAAAglB,EAAAjsB,MAAgBknC,gBAAgB5Q,EADP,CAQ3B9G,WAAAA,CAAYniB,GACVpG,sBAAAglB,EAAAjsB,MAAgBwvB,YAAYniB,EADV,CAQpBu6B,MAAAA,GACE5nC,KAAKgsB,IAAI1jC,MAAM4vF,cAAgB,OAC/B,MAAMC,EAAuB,IAAIz/D,IACjC,IAAK,MAAMkV,KAAU3mB,sBAAA8vE,EAAA/2E,MAAc8a,SACjC8S,EAAOuI,gBACHvI,EAAOzB,qBACTgsD,EAAqBx/D,IAAIiV,EAAOzB,qBAIpC,IAAIllB,sBAAA2vE,EAAC52E,MACH,OAGF,MAAMo4E,EAAYnxE,sBAAA2vE,EAAA52E,MAAsBq4E,yBACxC,IAAK,MAAMC,KAAYF,EAAW,CAGhC,GADAE,EAASC,OACLtxE,sBAAAglB,EAAAjsB,MAAgB+oC,2BAA2BuvC,EAASzxE,KAAKoL,IAC3D,SAEF,GAAIkmE,EAAqB75D,IAAIg6D,EAASzxE,KAAKoL,IACzC,SAEF,MAAM2b,EAAS5tB,KAAKi1B,YAAYqjD,GAC3B1qD,IAGL5tB,KAAKypC,aAAa7b,GAClBA,EAAOuI,gBAdyB,CAf3B,CAoCT0R,OAAAA,GACE/gC,sBAAAowE,EAAAl3E,MAAoB,GACpBA,KAAKgsB,IAAI1jC,MAAM4vF,cAAgB,OAC/B,MAAMM,EAAsB,IAAI9/D,IAChC,IAAK,MAAMkV,KAAU3mB,sBAAA8vE,EAAA/2E,MAAc8a,SAAU,KAAA29D,EAC3C7qD,EAAOqI,iBACFrI,EAAOzB,qBAA8C,OAAvByB,EAAOxD,aAI1C,QAAAquD,EAAAz4E,KAAK04E,sBAAsB9qD,EAAOzB,4BAAlC,IAAAssD,GAAAA,EAAwDE,OACxD/qD,EAAOxE,UAJLovD,EAAoB7/D,IAAIiV,EAAOzB,oBAHU,CAU7C,GAAAllB,sBAAA2vE,EAAI52E,MAAuB,CAEzB,MAAMo4E,EAAYnxE,sBAAA2vE,EAAA52E,MAAsBq4E,yBACxC,IAAK,MAAMC,KAAYF,EAAW,CAChC,MAAM,GAAEnmE,GAAOqmE,EAASzxE,KAEtB2xE,EAAoBl6D,IAAIrM,IACxBhL,sBAAAglB,EAAAjsB,MAAgB+oC,2BAA2B92B,IAI7CqmE,EAASK,MARuB,CAHT,CAe3B9hE,kBAAAsgE,EAAAn3E,KAAA83E,GAAAz1E,KAAArC,MACIA,KAAKswB,UACPtwB,KAAKgsB,IAAIkK,QAAS,GAEpBpvB,sBAAAowE,EAAAl3E,MAAoB,EAjCZ,CAoCV04E,qBAAAA,CAAsBzmE,GAAI,IAAA2mE,EACxB,OAAO,QAAAA,EAAA3xE,sBAAA2vE,EAAA52E,aAAA,IAAA44E,OAAA,EAAAA,EAAuBF,sBAAsBzmE,KAAO,IADnC,CAQ1BskB,eAAAA,CAAgB3I,GACQ3mB,sBAAAglB,EAAAjsB,MAAgBinC,cAChBrZ,GAItB3mB,sBAAAglB,EAAAjsB,MAAgBu2B,gBAAgB3I,EANV,CASxB6a,WAAAA,GACEzoC,KAAKgsB,IAAIhjC,iBAAiB,cAA1Bie,sBAAA6vE,EAAyC92E,OACzCA,KAAKgsB,IAAIhjC,iBAAiB,YAA1Bie,sBAAA4vE,EAAuC72E,MAF3B,CAKdwoC,YAAAA,GACExoC,KAAKgsB,IAAIlP,oBAAoB,cAA7B7V,sBAAA6vE,EAA4C92E,OAC5CA,KAAKgsB,IAAIlP,oBAAoB,YAA7B7V,sBAAA4vE,EAA0C72E,MAF7B,CAKf64E,MAAAA,CAAOjrD,GACL3mB,sBAAA8vE,EAAA/2E,MAAciX,IAAI2W,EAAO3b,GAAI2b,GAC7B,MAAM,oBAAEzB,GAAwByB,EAE9BzB,GACAllB,sBAAAglB,EAAAjsB,MAAgB+oC,2BAA2B5c,IAE3CllB,sBAAAglB,EAAAjsB,MAAgBgpC,+BAA+Bpb,EAPpC,CAWfkrD,MAAAA,CAAOlrD,GAAQ,IAAAmrD,EACb9xE,sBAAA8vE,EAAA/2E,MAAciY,OAAO2V,EAAO3b,IAC5B,QAAA8mE,EAAA9xE,sBAAAyvE,EAAA12E,aAAA,IAAA+4E,GAAAA,EAA4BC,yBAAyBprD,EAAOyI,aAExDpvB,sBAAAiwE,EAACl3E,OAAqB4tB,EAAOzB,qBAC/BllB,sBAAAglB,EAAAjsB,MAAgB8oC,4BAA4Blb,EALjC,CAafxE,MAAAA,CAAOwE,GAIL5tB,KAAK84E,OAAOlrD,GACZ3mB,sBAAAglB,EAAAjsB,MAAgBm1B,aAAavH,GACzBA,EAAO5B,IAAI6J,SAAS7tC,SAAS8tC,gBAC/B5Z,YAAW,KAGTjV,sBAAAglB,EAAAjsB,MAAgBslC,oBAAhB,GACC,GAEL1X,EAAO5B,IAAI5C,SACXwE,EAAOR,iBAAkB,EAErBnmB,sBAAAgwE,EAACj3E,OACHA,KAAK+3E,sBAA0C,EAjBpC,CA0Bf5jD,YAAAA,CAAavG,GAAQ,IAAAqrD,EACfrrD,EAAOlD,SAAW1qB,OAIlB4tB,EAAOzB,sBACTllB,sBAAAglB,EAAAjsB,MAAgB8oC,4BAA4Blb,EAAOzB,qBACnD3D,EAAAa,iBAAiBsE,wBAAwBC,GACzCA,EAAOzB,oBAAsB,MAG/BnsB,KAAK64E,OAAOjrD,GACZ,QAAAqrD,EAAArrD,EAAOlD,cAAP,IAAAuuD,GAAAA,EAAeH,OAAOlrD,GACtBA,EAAOiC,UAAU7vB,MACb4tB,EAAO5B,KAAO4B,EAAOR,kBACvBQ,EAAO5B,IAAI5C,SACXppB,KAAKgsB,IAAImH,OAAOvF,EAAO5B,MAhBN,CAwBrBrT,GAAAA,CAAIiV,GAKF,GAJA5tB,KAAKm0B,aAAavG,GAClB3mB,sBAAAglB,EAAAjsB,MAAgB4oC,UAAUhb,GAC1B5tB,KAAK64E,OAAOjrD,IAEPA,EAAOR,gBAAiB,CAC3B,MAAMpB,EAAM4B,EAAO5X,SACnBhW,KAAKgsB,IAAImH,OAAOnH,GAChB4B,EAAOR,iBAAkB,CAHE,CAO7BQ,EAAO2B,oBACP3B,EAAO4G,YACPvtB,sBAAAglB,EAAAjsB,MAAgBguB,uBAAuBJ,EAd7B,CAiBZqG,eAAAA,CAAgBrG,GAAQ,IAAAsrD,EACtB,IAAKtrD,EAAOR,gBACV,OAGF,MAAM,cAAE0I,GAAkB9tC,SACtB4lC,EAAO5B,IAAI6J,SAASC,KAKtBlI,EAAOkC,qBAAsB,EAC7B5T,YAAW,KACJ0R,EAAO5B,IAAI6J,SAAS7tC,SAAS8tC,eAUhClI,EAAOkC,qBAAsB,GAT7BlC,EAAO5B,IAAIhjC,iBACT,WACA,KACE4kC,EAAOkC,qBAAsB,CAA7B,GAEF,CAAEqW,MAAM,IAEVrQ,EAAcC,QACT,GAGN,IAGLnI,EAAOrB,oBAAsB,QAA7B2sD,EAAAjyE,sBAAAyvE,EAA6B12E,aAAA,IAAAk5E,OAAA,EAAAA,EAA4BC,iBACvDn5E,KAAKgsB,IACL4B,EAAO5B,IACP4B,EAAOyI,YACa,EAhCA,CAwCxBoT,YAAAA,CAAa7b,GACPA,EAAOiH,mBACTjH,EAAOkH,UAEP90B,KAAK2Y,IAAIiV,EAJQ,CAYrBwrD,iBAAAA,CAAkBxrD,GAMhB5tB,KAAKwvB,YAAY,CAAE0I,IALPA,IAAMtK,EAAO3B,WAAW6I,QAAQlH,GAKpBuK,KAJXA,KACXvK,EAAOxE,QAAP,EAG4BgP,UAAU,GANhB,CAa1BrK,SAAAA,GACE,OAAO9mB,sBAAAglB,EAAAjsB,MAAgBu7B,OADb,CA0BZ89C,WAAAA,CAAYrxC,EAAM36B,GAChBpG,sBAAAglB,EAAAjsB,MAAgBooC,cAAcJ,GAC9B/gC,sBAAAglB,EAAAjsB,MAAgB+nC,WAAWC,GAE3B,MAAM,QAAE9yB,EAAF,QAAWC,GAAX0B,kBAAAsgE,EAAuBn3E,KAAAs5E,GAAAj3E,KAAArC,MACvBiS,EAAKjS,KAAK+tB,YACVH,EAAA/W,kBAAAsgE,EAASn3E,KAAAu5E,GAAAl3E,KAAArC,KAAsB,CACnC0qB,OAAQ1qB,KACRiS,KACAib,EAAGhY,EACHiY,EAAGhY,EACH+W,UAAAjlB,sBAAAglB,EAAWjsB,MACXssB,YAAY,KACTjf,IAEDugB,GACF5tB,KAAK2Y,IAAIiV,EAhBa,CAyB1BqH,WAAAA,CAAYpuB,GAAM,IAAA2yE,EAChB,OAAQ,QAARA,EAAQ3yE,EAAK4yE,sBAAL,IAAAD,EAAAA,EAAuB3yE,EAAK6yE,sBAClC,KAAKvyE,EAAAlV,qBAAqBE,SACxB,OAAOokF,EAAAmB,eAAeziD,YAAYpuB,EAAM7G,KAAjCiH,sBAAAglB,EAAuCjsB,OAChD,KAAKmH,EAAAlV,qBAAqBI,IACxB,OAAOmkF,EAAAmB,UAAU1iD,YAAYpuB,EAAM7G,KAA5BiH,sBAAAglB,EAAkCjsB,OAC3C,KAAKmH,EAAAlV,qBAAqBG,MACxB,OAAOqkF,EAAAmB,YAAY3iD,YAAYpuB,EAAM7G,KAA9BiH,sBAAAglB,EAAoCjsB,OAE/C,OAAO,IATS,CAsDlBqoC,YAAAA,GACExxB,kBAAAsgE,EAAAn3E,KAAAi4E,GAAA51E,KAAArC,KAAA6W,kBAAAsgE,EACEn3E,KAAAs5E,GAAAj3E,KAAArC,OACmB,EAHR,CAWf+vB,WAAAA,CAAYnC,GACV3mB,sBAAAglB,EAAAjsB,MAAgB+vB,YAAYnC,EADV,CAQpBmN,cAAAA,CAAenN,GACb3mB,sBAAAglB,EAAAjsB,MAAgB+6B,eAAenN,EADV,CAQvB4M,UAAAA,CAAW5M,GACT,OAAO3mB,sBAAAglB,EAAAjsB,MAAgBw6B,WAAW5M,EADjB,CAQnB6H,QAAAA,CAAS7H,GACP3mB,sBAAAglB,EAAAjsB,MAAgBy1B,SAAS7H,EADV,CAQjB4pD,SAAAA,CAAU56D,GACR,MAAM,MAAE9a,GAAUqF,EAAA/F,YAAYQ,SACT,IAAjBgb,EAAMiX,QAAiBjX,EAAMkX,SAAWhyB,GAKxC8a,EAAMqT,SAAWjwB,KAAKgsB,KAItB/kB,sBAAA+vE,EAACh3E,QAOL8G,sBAAAkwE,EAAAh3E,MAAuB,GAEnBiH,sBAAA0vE,EAAC32E,MAKDiH,sBAAAglB,EAAAjsB,MAAgB2pC,YAAcxiC,EAAAlV,qBAAqBG,MAKvDykB,kBAAAsgE,EAAAn3E,KAAAi4E,GAAA51E,KAAArC,KAA4B4c,GAA0B,GAJpD3V,sBAAAglB,EAAAjsB,MAAgByjC,cALhB38B,sBAAA6vE,EAAA32E,MAAmB,GArBN,CAqCjB4zB,WAAAA,CAAYhX,GACV,GAAA3V,sBAAA+vE,EAAIh3E,MAOF,YADA8G,sBAAAkwE,EAAAh3E,MAAuB,GAGzB,MAAM,MAAE8B,GAAUqF,EAAA/F,YAAYQ,SAC9B,GAAqB,IAAjBgb,EAAMiX,QAAiBjX,EAAMkX,SAAWhyB,EAE1C,OAGF,GAAI8a,EAAMqT,SAAWjwB,KAAKgsB,IACxB,OAGFllB,sBAAAkwE,EAAAh3E,MAAuB,GAEvB,MAAM4tB,EAAS3mB,sBAAAglB,EAAAjsB,MAAgBinC,YAC/BngC,sBAAA6vE,EAAA32E,MAAoB4tB,GAAUA,EAAO0C,UAvBpB,CAiCnBe,aAAAA,CAAczD,EAAQV,EAAGC,GACvB,MAAM4X,EAAQ99B,sBAAAglB,EAAAjsB,MAAgBulC,WAAWrY,EAAGC,GAC5C,OAAc,OAAV4X,GAAkBA,IAAU/kC,OAGhC+kC,EAAM5Q,aAAavG,IACZ,EANmB,CAY5Bxe,OAAAA,GAAU,IAAAuqE,GACJ,QAAAA,EAAA1yE,sBAAAglB,EAAAjsB,MAAgBinC,mBAAhB,IAAA0yC,OAAA,EAAAA,EAA6BjvD,UAAW1qB,OAE1CiH,sBAAAglB,EAAAjsB,MAAgBqwB,iBAChBppB,sBAAAglB,EAAAjsB,MAAgBu2B,gBAAgB,OAGlC,IAAK,MAAM3I,KAAU3mB,sBAAA8vE,EAAA/2E,MAAc8a,SAAU,KAAA8+D,EAC3C,QAAAA,EAAA3yE,sBAAAyvE,EAAA12E,aAAA,IAAA45E,GAAAA,EAA4BZ,yBAAyBprD,EAAOyI,YAC5DzI,EAAOiC,UAAU,MACjBjC,EAAOR,iBAAkB,EACzBQ,EAAO5B,IAAI5C,QAJgC,CAM7CppB,KAAKgsB,IAAM,KACX/kB,sBAAA8vE,EAAA/2E,MAAckb,QACdjU,sBAAAglB,EAAAjsB,MAAgB8nC,YAAY9nC,KAfpB,CAmCVgW,MAAAA,CAAA6jE,GAAqB,IAAd,SAAExjE,GAATwjE,EACE75E,KAAKqW,SAAWA,GAChB,EAAA/O,EAAAyrE,oBAAmB/yE,KAAKgsB,IAAK3V,GAC7B,IAAK,MAAMuX,KAAU3mB,sBAAAglB,EAAAjsB,MAAgB0oC,WAAW1oC,KAAK+T,WACnD/T,KAAK2Y,IAAIiV,GAEX5tB,KAAK+nC,YANc,CAarB1d,MAAAA,CAAAyvD,GAAqB,IAAd,SAAEzjE,GAATyjE,EAIE7yE,sBAAAglB,EAAAjsB,MAAgBqwB,iBAEhBrwB,KAAKqW,SAAWA,GAChB,EAAA/O,EAAAyrE,oBAAmB/yE,KAAKgsB,IAAK,CAAE/W,SAAUoB,EAASpB,WAClDjV,KAAK+nC,YARc,CAerB,kBAAIhb,GACF,MAAM,UAAEN,EAAF,WAAaC,GAAe1sB,KAAKqW,SAASmW,QAChD,MAAO,CAACC,EAAWC,EAFA,EAnrBK,SAAA6sD,EAuZTlsE,GACf,OAAQpG,sBAAAglB,EAAAjsB,MAAgB2pC,WACtB,KAAKxiC,EAAAlV,qBAAqBE,SACxB,OAAO,IAAIokF,EAAAmB,eAAerqE,GAC5B,KAAKlG,EAAAlV,qBAAqBI,IACxB,OAAO,IAAImkF,EAAAmB,UAAUtqE,GACvB,KAAKlG,EAAAlV,qBAAqBG,MACxB,OAAO,IAAIqkF,EAAAmB,YAAYvqE,GAE3B,OAAO,IATgB,UAAA4qE,EA4DFr7D,EAAO0P,GAC5B,MAAMra,EAAKjS,KAAK+tB,YACVH,EAAA/W,kBAAAsgE,EAASn3E,KAAAu5E,GAAAl3E,KAAArC,KAAsB,CACnC0qB,OAAQ1qB,KACRiS,KACAib,EAAGtQ,EAAM1H,QACTiY,EAAGvQ,EAAMzH,QACT+W,UAAAjlB,sBAAAglB,EAAWjsB,MACXssB,eAMF,OAJIsB,GACF5tB,KAAK2Y,IAAIiV,GAGJA,CAdiC,UAAA0rD,IAkBxC,MAAM,EAAEpsD,EAAF,EAAKC,EAAL,MAAQ5I,EAAR,OAAeC,GAAWxkB,KAAKgsB,IAAIoF,wBACnCqpB,EAAMptD,KAAKsW,IAAI,EAAGupB,GAClBytB,EAAMttD,KAAKsW,IAAI,EAAGwpB,GAGlBokB,GAAWkJ,EAFLptD,KAAKkT,IAAI/W,OAAOuwF,WAAY7sD,EAAI3I,IAEd,EAAI2I,EAC5BskB,GAAWmJ,EAFLttD,KAAKkT,IAAI/W,OAAOwwF,YAAa7sD,EAAI3I,IAEf,EAAI2I,GAC3BjY,EAASC,GACdnV,KAAKqW,SAASpB,SAAW,MAAQ,EAC7B,CAACs8B,EAASC,GACV,CAACA,EAASD,GAEhB,MAAO,CAAEr8B,UAASC,UAbF,UAAA2iE,IAsKhBhxE,sBAAAmwE,EAAAj3E,MAAqB,GACrB,IAAK,MAAM4tB,KAAU3mB,sBAAA8vE,EAAA/2E,MAAc8a,SAC7B8S,EAAO0C,WACT1C,EAAOxE,SAGXtiB,sBAAAmwE,EAAAj3E,MAAqB,EAVZ,CAAA+rB,gBAtoBPqrD,EAAN,gBAqBwB,GAzExBpxF,EAAAoxF,sBAAAA,4FCkBA,IAAAjwE,EAAAC,EAAA,GAQAwjB,EAAAxjB,EAAA,GAKAohB,EAAAphB,EAAA,GACA6yE,EAAA7yE,EAAA,IAAA8yE,EAAA,IAAA5zE,QAAA6zE,EAAA,IAAA7zE,QAAA8zE,EAAA,IAAA9zE,QAAA+zE,EAAA,IAAA/zE,QAAAg0E,EAAA,IAAAh0E,QAAAi0E,EAAA,IAAAj0E,QAAAk0E,EAAA,IAAAl0E,QAAAm0E,EAAA,IAAAn0E,QAAAo0E,EAAA,IAAAp0E,QAAAq0E,EAAA,IAAA9mE,QAKA,MAAM6jE,UAAuBlvD,EAAAa,iBA2B3B,2BAAW2Z,GACT,MAAMC,EAAQy0C,EAAex3E,UAEvBgjC,EAAexD,GAAQA,EAAKpP,UAE5B8S,EAAQxY,EAAAmY,0BAA0BM,gBAClCC,EAAM1Y,EAAAmY,0BAA0BQ,cAEtC,OAAO,EAAAp8B,EAAA3H,QACLQ,KACA,mBACA,IAAI4qB,EAAAwU,gBAAgB,CAClB,CAIE,CAAC,SAAU,aAAc,SAAU,cACnC6D,EAAM5S,eACN,CAAEuP,SAAS,IAEb,CACE,CAAC,aAAc,iBAAkB,SAAU,cAC3CqD,EAAM5S,gBAER,CACE,CAAC,YAAa,iBACd4S,EAAM23C,gBACN,CAAE/6C,KAAM,EAAEuD,EAAO,GAAItD,QAASoD,IAEhC,CACE,CAAC,iBAAkB,uBACnBD,EAAM23C,gBACN,CAAE/6C,KAAM,EAAEyD,EAAK,GAAIxD,QAASoD,IAE9B,CACE,CAAC,aAAc,kBACfD,EAAM23C,gBACN,CAAE/6C,KAAM,CAACuD,EAAO,GAAItD,QAASoD,IAE/B,CACE,CAAC,kBAAmB,wBACpBD,EAAM23C,gBACN,CAAE/6C,KAAM,CAACyD,EAAK,GAAIxD,QAASoD,IAE7B,CACE,CAAC,UAAW,eACZD,EAAM23C,gBACN,CAAE/6C,KAAM,CAAC,GAAIuD,GAAQtD,QAASoD,IAEhC,CACE,CAAC,eAAgB,qBACjBD,EAAM23C,gBACN,CAAE/6C,KAAM,CAAC,GAAIyD,GAAMxD,QAASoD,IAE9B,CACE,CAAC,YAAa,iBACdD,EAAM23C,gBACN,CAAE/6C,KAAM,CAAC,EAAGuD,GAAQtD,QAASoD,IAE/B,CACE,CAAC,iBAAkB,uBACnBD,EAAM23C,gBACN,CAAE/6C,KAAM,CAAC,EAAGyD,GAAMxD,QAASoD,MA9DL,CAsE9BjjC,WAAAA,CAAYoN,GACV1M,MAAM,IAAK0M,EAAQ7mB,KAAM,mBAAzBytB,4BAAA,KAAA0mE,GAAAn0E,2BAAA,KAAA0zE,EAjGoBl6E,KAAK66E,cAAc52D,KAAKjkB,OAA9CwG,2BAAA,KAAA2zE,EAEuBn6E,KAAK86E,eAAe72D,KAAKjkB,OAAhDwG,2BAAA,KAAA4zE,EAEuBp6E,KAAK+6E,eAAe92D,KAAKjkB,OAAhDwG,2BAAA,KAAA6zE,EAEyBr6E,KAAKg7E,iBAAiB/2D,KAAKjkB,OAApDwG,2BAAA,KAAA8zE,OAAA,GAAA9zE,2BAAA,KAAA+zE,EAIW,IAAX/zE,2BAAA,KAAAg0E,EAAA,GAAA7uF,OAEkBqU,KAAKiS,GAAG,YAAAzL,2BAAA,KAAAi0E,OAAA,GAAAj0E,2BAAA,KAAAk0E,EAIX,MAkFb5zE,sBAAAwzE,EAAAt6E,KACEqN,EAAO+yB,OACPs3C,EAAeuD,eACfzyD,EAAAa,iBAAiBmE,mBACnB1mB,sBAAA2zE,EAAAz6E,KAAiBqN,EAAOguC,UAAYq8B,EAAewD,iBANjC,CAUpB,iBAAOjtD,CAAWC,GAChB1F,EAAAa,iBAAiB4E,WAAWC,EAAM,CAChCE,QAAS,CAAC,6BAA8B,kCAE1C,MAAM9lC,EAAQgmC,iBAAiBtmC,SAASumC,iBAYxCvuB,KAAKm7E,iBAAmB3sD,WACtBlmC,EAAMmmC,iBAAiB,sBAjBH,CAsBxB,0BAAOC,CAAoBhoC,EAAMuI,GAC/B,OAAQvI,GACN,KAAKygB,EAAA7U,2BAA2BG,cAC9BilF,EAAewD,iBAAmBjsF,EAClC,MACF,KAAKkY,EAAA7U,2BAA2BI,eAC9BglF,EAAeuD,cAAgBhsF,EANG,CAYxC+mC,YAAAA,CAAatvC,EAAMuI,GACjB,OAAQvI,GACN,KAAKygB,EAAA7U,2BAA2BG,cAC9BokB,kBAAA8jE,EAAA36E,KAAAo7E,GAAA/4E,KAAArC,KAAqB/Q,GACrB,MACF,KAAKkY,EAAA7U,2BAA2BI,eAC9BmkB,kBAAA8jE,EAAA36E,KAAAq7E,GAAAh5E,KAAArC,KAAkB/Q,GANE,CAY1B,oCAAW2/B,GACT,MAAO,CACL,CACEznB,EAAA7U,2BAA2BG,cAC3BilF,EAAewD,kBAEjB,CACE/zE,EAAA7U,2BAA2BI,eAC3BglF,EAAeuD,eAAiBzyD,EAAAa,iBAAiBmE,mBARhB,CAcvC,sBAAIyB,GACF,MAAO,CACL,CAAC9nB,EAAA7U,2BAA2BG,cAA5BwU,sBAAAwzE,EAA2Cz6E,OAC3C,CAACmH,EAAA7U,2BAA2BI,eAA5BuU,sBAAAqzE,EAA4Ct6E,OAHvB,CA0DzB46E,eAAAA,CAAgB1tD,EAAGC,GACjBntB,KAAKisB,WAAWyX,yBAAyBxW,EAAGC,GAAoB,EAD5C,CAKtBsF,qBAAAA,GAEE,MAAMzd,EAAQhV,KAAK8xB,YACnB,MAAO,EACJ4lD,EAAeyD,iBAAmBnmE,IACjC0iE,EAAeyD,iBAAfl0E,sBAAAwzE,EAAkCz6E,OAAkBgV,EALlC,CAUxB8f,OAAAA,GACO90B,KAAK0qB,SAGV/pB,MAAMm0B,UACW,OAAb90B,KAAKgsB,MAIJhsB,KAAKotB,iBAGRptB,KAAK0qB,OAAO/R,IAAI3Y,OAZV,CAiBVy0B,cAAAA,GACMz0B,KAAK20B,iBAIT30B,KAAK0qB,OAAOwc,iBAAgB,GAC5BlnC,KAAK0qB,OAAO0d,cAAcjhC,EAAAlV,qBAAqBE,UAC/CwO,MAAM8zB,iBACNz0B,KAAKs7E,WAAWnsD,UAAU/F,OAAO,WACjCppB,KAAKu7E,UAAUC,iBAAkB,EACjCx7E,KAAKyrB,cAAe,EACpBzrB,KAAKgsB,IAAIyvD,gBAAgB,yBACzBz7E,KAAKu7E,UAAUvyF,iBAAiB,UAAhCie,sBAAAozE,EAA2Cr6E,OAC3CA,KAAKu7E,UAAUvyF,iBAAiB,QAAhCie,sBAAAkzE,EAAyCn6E,OACzCA,KAAKu7E,UAAUvyF,iBAAiB,OAAhCie,sBAAAizE,EAAwCl6E,OACxCA,KAAKu7E,UAAUvyF,iBAAiB,QAAhCie,sBAAAmzE,EAAyCp6E,OAf1B,CAmBjB00B,eAAAA,GACO10B,KAAK20B,iBAIV30B,KAAK0qB,OAAOwc,iBAAgB,GAC5BvmC,MAAM+zB,kBACN10B,KAAKs7E,WAAWnsD,UAAUxW,IAAI,WAC9B3Y,KAAKu7E,UAAUC,iBAAkB,EACjCx7E,KAAKgsB,IAAI6G,aAAa,wBAAtB5rB,sBAAAuzE,EAA+Cx6E,OAC/CA,KAAKyrB,cAAe,EACpBzrB,KAAKu7E,UAAUz+D,oBAAoB,UAAnC7V,sBAAAozE,EAA8Cr6E,OAC9CA,KAAKu7E,UAAUz+D,oBAAoB,QAAnC7V,sBAAAkzE,EAA4Cn6E,OAC5CA,KAAKu7E,UAAUz+D,oBAAoB,OAAnC7V,sBAAAizE,EAA2Cl6E,OAC3CA,KAAKu7E,UAAUz+D,oBAAoB,QAAnC7V,sBAAAmzE,EAA4Cp6E,OAI5CA,KAAKgsB,IAAI+J,MAAM,CACb2lD,eAAe,IAIjB17E,KAAKs2B,WAAY,EACjBt2B,KAAK0qB,OAAOsB,IAAImD,UAAUxW,IAAI,mBAxBd,CA4BlBkT,OAAAA,CAAQjP,GACD5c,KAAK8vB,sBAGVnvB,MAAMkrB,QAAQjP,GACVA,EAAMqT,SAAWjwB,KAAKu7E,WACxBv7E,KAAKu7E,UAAUxlD,QANJ,CAWfvB,SAAAA,GAAY,IAAAmnD,EACN37E,KAAKukB,MACP1N,kBAAA8jE,EAAA36E,KAAA47E,GAAAv5E,KAAArC,OAIFA,KAAKy0B,iBACLz0B,KAAKu7E,UAAUxlD,QACX,QAAJ4lD,EAAI37E,KAAKqsB,uBAAL,IAAAsvD,GAAAA,EAAsBrvD,YACxBtsB,KAAKqvB,SAEPrvB,KAAKqsB,gBAAkB,KAXb,CAeZiE,OAAAA,GACE,OAAQtwB,KAAKu7E,WAAiD,KAApCv7E,KAAKu7E,UAAUjhD,UAAUtzC,MAD3C,CAKVoiC,MAAAA,GACEppB,KAAKs2B,WAAY,EACbt2B,KAAK0qB,SACP1qB,KAAK0qB,OAAOwc,iBAAgB,GAC5BlnC,KAAK0qB,OAAOsB,IAAImD,UAAUxW,IAAI,oBAEhChY,MAAMyoB,QANC,CA2DTmH,MAAAA,GACE,IAAKvwB,KAAK20B,eACR,OAGFh0B,MAAM4vB,SACNvwB,KAAK00B,kBACL,MAAMmnD,EAAA50E,sBAAAszE,EAAYv6E,MACZ87E,EAAAh1E,sBAAAyzE,EAAWv6E,KAAgB6W,kBAAA8jE,EAAA36E,KAAA+7E,GAAA15E,KAAArC,MAAoBg8E,WACrD,GAAIH,IAAcC,EAChB,OAGF,MAAMG,EAAU10F,IACduf,sBAAAyzE,EAAAv6E,KAAgBzY,GACXA,GAILsvB,kBAAA8jE,EAAA36E,KAAAk8E,GAAA75E,KAAArC,MACAA,KAAKisB,WAAW6I,QAAQ90B,MACxB6W,kBAAA8jE,EAAA36E,KAAAm8E,GAAA95E,KAAArC,OALEA,KAAKopB,QAKP,EAEFppB,KAAKwvB,YAAY,CACf0I,IAAKA,KACH+jD,EAAQH,EAAR,EAEF3jD,KAAMA,KACJ8jD,EAAQJ,EAAR,EAEFzjD,UAAU,IAEZvhB,kBAAA8jE,EAAA36E,KAAAm8E,GAAA95E,KAAArC,KAhCO,CAoCT40B,uBAAAA,GACE,OAAO50B,KAAK20B,cADY,CAK1ByB,eAAAA,GACEp2B,KAAKy0B,iBACLz0B,KAAKu7E,UAAUxlD,OAFC,CASlBqmD,QAAAA,CAASx/D,GACP5c,KAAKo2B,iBADS,CAQhB+N,OAAAA,CAAQvnB,GACFA,EAAMqT,SAAWjwB,KAAKgsB,KAAqB,UAAdpP,EAAM5tB,MACrCgR,KAAKo2B,kBAELxZ,EAAMxzB,iBAJK,CAQf4xF,gBAAAA,CAAiBp+D,GACf86D,EAAe10C,iBAAiBvD,KAAKz/B,KAAM4c,EADrB,CAIxBk+D,cAAAA,CAAel+D,GACb5c,KAAKs2B,WAAY,CADG,CAItBukD,aAAAA,CAAcj+D,GACZ5c,KAAKs2B,WAAY,CADE,CAIrBykD,cAAAA,CAAen+D,GACb5c,KAAK0qB,OAAOsB,IAAImD,UAAUC,OAAO,kBAAmBpvB,KAAKswB,UADrC,CAKtB2F,cAAAA,GACEj2B,KAAKu7E,UAAU1oD,aAAa,OAAQ,WACpC7yB,KAAKu7E,UAAUE,gBAAgB,iBAFhB,CAMjBtlD,aAAAA,GACEn2B,KAAKu7E,UAAU1oD,aAAa,OAAQ,WACpC7yB,KAAKu7E,UAAU1oD,aAAa,kBAAkB,EAFhC,CAMhB7c,MAAAA,GACE,GAAIhW,KAAKgsB,IACP,OAAOhsB,KAAKgsB,IAGd,IAAIqwD,EAAOC,EACPt8E,KAAKukB,QACP83D,EAAQr8E,KAAKktB,EACbovD,EAAQt8E,KAAKmtB,GAGfxsB,MAAMqV,SACNhW,KAAKu7E,UAAYvzF,SAASG,cAAc,OACxC6X,KAAKu7E,UAAU3oD,UAAY,WAE3B5yB,KAAKu7E,UAAU1oD,aAAa,KAA5B5rB,sBAAAuzE,EAAkCx6E,OAClCA,KAAKm2B,gBAEL3N,EAAAa,iBAAiB8E,aACdx/B,IAAI,gCACJoe,MAAK/hB,IAAA,IAAAuxF,EAAA,OAAO,QAAPA,EAAOv8E,KAAKu7E,iBAAL,IAAAgB,OAAA,EAAAA,EAAgB1pD,aAAa,aAAc7nC,EAF1D,IAIAw9B,EAAAa,iBAAiB8E,aACdx/B,IAAI,8BACJoe,MAAK/hB,IAAA,IAAAwxF,EAAA,OAAO,QAAPA,EAAOx8E,KAAKu7E,iBAAL,IAAAiB,OAAA,EAAAA,EAAgB3pD,aAAa,kBAAmB7nC,EAF/D,IAGAgV,KAAKu7E,UAAUC,iBAAkB,EAEjC,MAAM,MAAElzF,GAAU0X,KAAKu7E,UAevB,GAdAjzF,EAAM+yD,SAAN,QAAA1vD,OAAAsb,sBAAAwzE,EAAyBz6E,MAAA,6BACzB1X,EAAM83C,MAANn5B,sBAAAqzE,EAAct6E,MAEdA,KAAKgsB,IAAImH,OAAOnzB,KAAKu7E,WAErBv7E,KAAKs7E,WAAatzF,SAASG,cAAc,OACzC6X,KAAKs7E,WAAWnsD,UAAUxW,IAAI,UAAW,WACzC3Y,KAAKgsB,IAAImH,OAAOnzB,KAAKs7E,aAKrB,EAAA1wD,EAAA+I,YAAW3zB,KAAMA,KAAKgsB,IAAK,CAAC,WAAY,YAEpChsB,KAAKukB,MAAO,CAEd,MAAO2M,EAAaC,GAAgBnxB,KAAKitB,iBACzC,GAAIjtB,KAAKmsB,oBAAqB,CAU5B,MAAM,SAAE3jC,GAAFye,sBAAAyzE,EAAe16E,MACrB,IAAKywB,EAAIC,GAAM1wB,KAAKyyB,yBACnBhC,EAAIC,GAAM1wB,KAAK6xB,wBAAwBpB,EAAIC,GAC5C,MAAOjE,EAAWC,GAAc1sB,KAAK+sB,gBAC9BJ,EAAOC,GAAS5sB,KAAKgtB,gBAC5B,IAAIyvD,EAAMC,EACV,OAAQ18E,KAAKiV,UACX,KAAK,EACHwnE,EAAOJ,GAAS7zF,EAAS,GAAKmkC,GAASF,EACvCiwD,EAAOJ,EAAQt8E,KAAKwkB,QAAUh8B,EAAS,GAAKokC,GAASF,EACrD,MACF,KAAK,GACH+vD,EAAOJ,GAAS7zF,EAAS,GAAKmkC,GAASF,EACvCiwD,EAAOJ,GAAS9zF,EAAS,GAAKokC,GAASF,GACtC+D,EAAIC,GAAM,CAACA,GAAKD,GACjB,MACF,KAAK,IACHgsD,EAAOJ,EAAQr8E,KAAKukB,OAAS/7B,EAAS,GAAKmkC,GAASF,EACpDiwD,EAAOJ,GAAS9zF,EAAS,GAAKokC,GAASF,GACtC+D,EAAIC,GAAM,EAAED,GAAKC,GAClB,MACF,KAAK,IACH+rD,EACEJ,GACC7zF,EAAS,GAAKmkC,EAAQ3sB,KAAKwkB,OAASkI,GAAcD,EACrDiwD,EACEJ,GACC9zF,EAAS,GAAKokC,EAAQ5sB,KAAKukB,MAAQkI,GAAaC,GAClD+D,EAAIC,GAAM,EAAEA,EAAID,GAGrBzwB,KAAKwwB,MAAMisD,EAAOvrD,EAAawrD,EAAOvrD,EAAcV,EAAIC,EAzC5B,MA2C5B1wB,KAAKwwB,MACH6rD,EAAQnrD,EACRorD,EAAQnrD,EACRnxB,KAAKukB,MAAQ2M,EACblxB,KAAKwkB,OAAS2M,GAIlBta,kBAAA8jE,EAAA36E,KAAAk8E,GAAA75E,KAAArC,MACAA,KAAKyrB,cAAe,EACpBzrB,KAAKu7E,UAAUC,iBAAkB,CAxDnB,MA0Ddx7E,KAAKyrB,cAAe,EACpBzrB,KAAKu7E,UAAUC,iBAAkB,EAOnC,OAAOx7E,KAAKgsB,GA5GL,CA6HT,cAAIqK,GACF,OAAOr2B,KAAKu7E,SADG,CAKjB,kBAAOtmD,CAAYpuB,EAAM6jB,EAAQwB,GAC/B,IAAI3e,EAAc,KAClB,GAAI1G,aAAgBozE,EAAA0C,0BAA2B,CAC7C,MACE91E,MACE+1E,uBAAuB,SAAEvhC,EAAF,UAAYwhC,GAD/B,KAEJt4E,EAFI,SAGJ0Q,EAHI,GAIJhD,GALE,YAOJ7pB,EAPI,aAQJ00F,EACApyD,QACEtJ,MAAM,WAAExP,KAER/K,EAGJ,IAAKze,GAAsC,IAAvBA,EAAYiD,OAE9B,OAAO,KAETkiB,EAAc1G,EAAO,CACnB4yE,eAAgBtyE,EAAAlV,qBAAqBE,SACrCiuC,MAAOh6C,MAAMkmF,KAAKuQ,GAClBxhC,WACApsD,MAAO7G,EAAYwE,KAAK,MACxBpE,SAAUs0F,EACV/oE,UAAWnC,EAAa,EACxBrN,OACA0Q,WACAhD,KACAob,SAAS,EA9BkC,CAiC/C,MAAMO,EAASjtB,MAAMs0B,YAAYpuB,EAAM6jB,EAAQwB,GAQ/C,OANAplB,sBAAA2zE,EAAA7sD,EAAmB/mB,EAAKw0C,UACxBv0C,sBAAAwzE,EAAA1sD,EAAgBzmB,EAAA3E,KAAKC,gBAAgBoE,EAAKu5B,QAC1Ct5B,sBAAAyzE,EAAA3sD,EAAkB/mB,EAAK5X,OACvB2+B,EAAOzB,oBAAsBtlB,EAAKoL,IAAM,KACxCnL,sBAAA4zE,EAAA9sD,EAAsBrgB,GAEfqgB,CA3CmC,CA+C5CxD,SAAAA,GAAgC,IAAtB2yD,EAAA3xF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACR,GAAI4U,KAAKswB,UACP,OAAO,KAGT,GAAItwB,KAAKqtB,QACP,MAAO,CACLtZ,UAAW/T,KAAK+T,UAChB9B,GAAIjS,KAAKmsB,oBACTkB,SAAS,GAIb,MAAM2vD,EAAUtF,EAAeyD,iBAAmBn7E,KAAK8xB,YACjDvtB,EAAOvE,KAAKo0B,QAAQ4oD,EAASA,GAC7B58C,EAAQ5X,EAAAa,iBAAiBoE,cAAc0S,QAC3CngC,KAAKotB,gBACDkB,iBAAiBtuB,KAAKu7E,WAAWn7C,MADrCn5B,sBAAAqzE,EAEIt6E,OAGAmqB,EAAa,CACjBsvD,eAAgBtyE,EAAAlV,qBAAqBE,SACrCiuC,QACAib,SAAAp0C,sBAAAwzE,EAAUz6E,MACV/Q,MAAAgY,sBAAAszE,EAAOv6E,MACP+T,UAAW/T,KAAK+T,UAChBxP,OACA0Q,SAAUjV,KAAKiV,SACfgoE,mBAAoBj9E,KAAKusB,qBAG3B,OAAIwwD,EAGK5yD,EAGLnqB,KAAKmsB,sBAAuBtV,kBAAA8jE,EAAC36E,KAAAk9E,GAAA76E,KAAArC,KAAwBmqB,GAChD,MAGTA,EAAWlY,GAAKjS,KAAKmsB,oBAEdhC,EA5CuB,EA1pBlC,SAAAixD,EAkLkB//B,GACd,MAAM8hC,EAActjE,IAClB7Z,KAAKu7E,UAAUjzF,MAAM+yD,SAArB,QAAA1vD,OAAwCkuB,EAAK,6BAC7C7Z,KAAK4wB,UAAU,IAAK/W,EAAA5S,sBAAAwzE,EAAOz6E,OAAkBA,KAAK8xB,aAClDhrB,sBAAA2zE,EAAAz6E,KAAiB6Z,GACjBhD,kBAAA8jE,EAAA36E,KAAAm8E,GAAA95E,KAAArC,KAAA,EAEIo9E,EAAAn2E,sBAAAwzE,EAAgBz6E,MACtBA,KAAKwvB,YAAY,CACf0I,IAAKA,KACHilD,EAAY9hC,EAAZ,EAEFljB,KAAMA,KACJglD,EAAYC,EAAZ,EAEFhlD,UAAU,EACV1xC,KAAMygB,EAAA7U,2BAA2BG,cACjCmsC,qBAAqB,EACrBC,UAAU,GAlBY,UAAAw8C,EA0Bbj7C,GACX,MAAMi9C,EAAAp2E,sBAAAqzE,EAAat6E,MACnBA,KAAKwvB,YAAY,CACf0I,IAAKA,KACHpxB,sBAAAwzE,EAAAt6E,KAAcA,KAAKu7E,UAAUjzF,MAAM83C,MAAQA,EAA3C,EAEFjI,KAAMA,KACJrxB,sBAAAwzE,EAAAt6E,KAAcA,KAAKu7E,UAAUjzF,MAAM83C,MAAQi9C,EAA3C,EAEFjlD,UAAU,EACV1xC,KAAMygB,EAAA7U,2BAA2BI,eACjCksC,qBAAqB,EACrBC,UAAU,GAZM,UAAAk9C,IAiJlB,MAAMuB,EAAOt9E,KAAKu7E,UAAU7lC,qBAAqB,OACjD,GAAoB,IAAhB4nC,EAAKjyF,OACP,OAAO2U,KAAKu7E,UAAUjhD,UAExB,MAAM1qC,EAAS,GACf,IAAK,MAAMo8B,KAAOsxD,EAChB1tF,EAAOQ,KAAK47B,EAAIsO,UAAUzzC,QAAQ,WAAY,KAEhD,OAAO+I,EAAOhD,KAAK,KATN,UAAAuvF,IAab,MAAOjrD,EAAaC,GAAgBnxB,KAAKitB,iBAEzC,IAAI1oB,EACJ,GAAIvE,KAAKotB,gBACP7oB,EAAOvE,KAAKgsB,IAAIoF,4BACX,CAGL,MAAM,aAAE3B,EAAF,IAAgBzD,GAAQhsB,KACxBu9E,EAAevxD,EAAI1jC,MAAMk1F,QAC/BxxD,EAAI1jC,MAAMk1F,QAAU,SACpB/tD,EAAazD,IAAImH,OAAOnzB,KAAKgsB,KAC7BznB,EAAOynB,EAAIoF,wBACXpF,EAAI5C,SACJ4C,EAAI1jC,MAAMk1F,QAAUD,CATf,CAcHv9E,KAAKiV,SAAW,MAAQjV,KAAKsvB,eAAiB,KAChDtvB,KAAKukB,MAAQhgB,EAAKggB,MAAQ2M,EAC1BlxB,KAAKwkB,OAASjgB,EAAKigB,OAAS2M,IAE5BnxB,KAAKukB,MAAQhgB,EAAKigB,OAAS0M,EAC3BlxB,KAAKwkB,OAASjgB,EAAKggB,MAAQ4M,GAE7BnxB,KAAKuvB,mBA3BgB,UAAA2sD,IAkPrB,GADAl8E,KAAKu7E,UAAUkC,kBACXx2E,sBAAAszE,EAACv6E,MAGL,IAAK,MAAM09E,KAAQz2E,sBAAAszE,EAAAv6E,MAAc1Z,MAAM,MAAO,CAC5C,MAAM0lC,EAAMhkC,SAASG,cAAc,OACnC6jC,EAAImH,OACFuqD,EAAO11F,SAAS21F,eAAeD,GAAQ11F,SAASG,cAAc,OAEhE6X,KAAKu7E,UAAUpoD,OAAOnH,EALsB,CALlC,UAAAkxD,EAiHK/yD,GACjB,MAAM,MAAEl7B,EAAF,SAASosD,EAAT,MAAmBjb,EAAnB,KAA0B77B,EAA1B,UAAgCwP,GAAhC9M,sBAAAyzE,EAA8C16E,MAEpD,OACEmqB,EAAWl7B,QAAUA,GACrBk7B,EAAWkxB,WAAaA,GACxBlxB,EAAW5lB,KAAKzd,MAAK,CAAComC,EAAG9/B,IAAMC,KAAK0Y,IAAImnB,EAAI3oB,EAAKnX,KAAO,KACxD+8B,EAAWiW,MAAMt5C,MAAK,CAACkd,EAAG5W,IAAM4W,IAAMo8B,EAAMhzC,MAC5C+8B,EAAWpW,YAAcA,CARE,UAAA6nE,IAYI,IAAjBt/D,EAAAlxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAKhB,IAAK4U,KAAKmsB,oBACR,OAIF,GADAtV,kBAAA8jE,EAAA36E,KAAAm8E,GAAA95E,KAAArC,OACKsc,IAA2B,IAAftc,KAAKukB,OAA+B,IAAhBvkB,KAAKwkB,QAExC,YADAtI,YAAW,IAAArF,kBAAA8jE,EAAM36E,KAAA47E,GAAAv5E,KAAArC,MAAuC,IAAO,GAIjE,MAAMg9E,EAAUtF,EAAeyD,iBAAmBn7E,KAAK8xB,YACvD7qB,sBAAAyzE,EAAA16E,MAAkBuE,KAAOvE,KAAKo0B,QAAQ4oD,EAASA,EAhBd,CArtBSY,EAAxClG,EAqtB+B3rD,gBArtB/B2rD,EAAN,0BAmBmC,IAAjC3rD,gBAnBI2rD,EAAN,mBAqB4B,GAA1B3rD,gBArBI2rD,EAAN,gBAuByB,MAAvB3rD,gBAvBI2rD,EAAN,mBAyB4B,IAA1B3rD,gBAzBI2rD,EAAN,QA+FiB,YApIjB1xF,EAAA0xF,eAAAA,mKCuBA,IAAAvwE,EAAAC,EAAA,GAYAE,EAAAF,EAAA,GAMAC,EAAAD,EAAA,GACAy2E,EAAAz2E,EAAA,IACA02E,EAAA12E,EAAA,IACA22E,EAAA32E,EAAA,IAEA,MAAM42E,EAAoB,IAEpBC,EAAuB,IAAIpqE,QAEjC,SAASqqE,EAAY35E,GACnB,MAAO,CACLggB,MAAOhgB,EAAK,GAAKA,EAAK,GACtBigB,OAAQjgB,EAAK,GAAKA,EAAK,GAHA,CAuB3B,MAAM45E,EAKJ,aAAOpvF,CAAO68B,GAGZ,OAFgBA,EAAW/kB,KAAK4yE,gBAG9B,KAAKtyE,EAAA7S,eAAeE,KAClB,OAAO,IAAI4pF,EAAsBxyD,GAEnC,KAAKzkB,EAAA7S,eAAeC,KAClB,OAAO,IAAI8pF,EAAsBzyD,GAEnC,KAAKzkB,EAAA7S,eAAeiB,OAGlB,OAFkBq2B,EAAW/kB,KAAKy3E,WAGhC,IAAK,KACH,OAAO,IAAIC,EAA4B3yD,GACzC,IAAK,MACH,OAAIA,EAAW/kB,KAAK23E,YACX,IAAIC,EAAmC7yD,GACrCA,EAAW/kB,KAAK63E,SAClB,IAAIC,EAAgC/yD,GAEtC,IAAIgzD,EAAkChzD,GAC/C,IAAK,KACH,OAAO,IAAIizD,EAA8BjzD,GAC3C,IAAK,MACH,OAAO,IAAIkzD,EAAiClzD,GAEhD,OAAO,IAAImzD,EAAwBnzD,GAErC,KAAKzkB,EAAA7S,eAAea,MAClB,OAAO,IAAI6pF,EAAuBpzD,GAEpC,KAAKzkB,EAAA7S,eAAenC,SAClB,OAAO,IAAIwqF,EAA0B/wD,GAEvC,KAAKzkB,EAAA7S,eAAeG,KAClB,OAAO,IAAIwqF,EAAsBrzD,GAEnC,KAAKzkB,EAAA7S,eAAeI,OAClB,OAAO,IAAIwqF,GAAwBtzD,GAErC,KAAKzkB,EAAA7S,eAAeK,OAClB,OAAO,IAAIwqF,GAAwBvzD,GAErC,KAAKzkB,EAAA7S,eAAeO,SAClB,OAAO,IAAIuqF,GAA0BxzD,GAEvC,KAAKzkB,EAAA7S,eAAeY,MAClB,OAAO,IAAImqF,GAAuBzzD,GAEpC,KAAKzkB,EAAA7S,eAAejC,IAClB,OAAO,IAAIitF,GAAqB1zD,GAElC,KAAKzkB,EAAA7S,eAAeM,QAClB,OAAO,IAAI2qF,GAAyB3zD,GAEtC,KAAKzkB,EAAA7S,eAAeQ,UAClB,OAAO,IAAI0qF,GAA2B5zD,GAExC,KAAKzkB,EAAA7S,eAAeS,UAClB,OAAO,IAAI0qF,GAA2B7zD,GAExC,KAAKzkB,EAAA7S,eAAeU,SAClB,OAAO,IAAI0qF,GAA0B9zD,GAEvC,KAAKzkB,EAAA7S,eAAeW,UAClB,OAAO,IAAI0qF,GAA2B/zD,GAExC,KAAKzkB,EAAA7S,eAAelC,MAClB,OAAO,IAAIwtF,GAAuBh0D,GAEpC,KAAKzkB,EAAA7S,eAAec,eAClB,OAAO,IAAIyqF,GAAgCj0D,GAE7C,QACE,OAAO,IAAIk0D,EAAkBl0D,GA5ET,EALG,IAAAm0D,EAAA,IAAAz5E,QAsF/B,MAAMw5E,EAGJ7/E,WAAAA,CACE2rB,GAMA,IALA,aACEo0D,GAAe,EADjB,aAEEC,GAAe,EAFjB,qBAGEC,GAAuB,GAHzB90F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAII,CAAC,EANPob,2BAAA,KAAAu5E,GAFa,GAUX//E,KAAKggF,aAAeA,EACpBhgF,KAAK6G,KAAO+kB,EAAW/kB,KACvB7G,KAAK+kC,MAAQnZ,EAAWmZ,MACxB/kC,KAAKmgF,YAAcv0D,EAAWu0D,YAC9BngF,KAAKogF,gBAAkBx0D,EAAWw0D,gBAClCpgF,KAAKqgF,mBAAqBz0D,EAAWy0D,mBACrCrgF,KAAKsgF,YAAc10D,EAAW00D,YAC9BtgF,KAAKutE,WAAa3hD,EAAW2hD,WAC7BvtE,KAAKqR,kBAAoBua,EAAWva,kBACpCrR,KAAKugF,gBAAkB30D,EAAW20D,gBAClCvgF,KAAKwT,aAAeoY,EAAWpY,aAC/BxT,KAAKwgF,cAAgB50D,EAAW60D,aAChCzgF,KAAK0qB,OAASkB,EAAWlB,OAErBs1D,IACFhgF,KAAK2jC,UAAY3jC,KAAK0gF,iBAAiBT,IAErCC,GACFlgF,KAAK2gF,uBAnBP,CAuBF,oBAAOC,CAAPC,GAA0D,IAArC,SAAEC,EAAF,YAAYC,EAAZ,SAAyBC,GAA9CH,EACE,SAAU,OAAAC,QAAA,IAAAA,GAAAA,EAAU5yF,KAAO,OAAA6yF,QAAA,IAAAA,GAAAA,EAAa7yF,KAAO,OAAA8yF,QAAA,IAAAA,GAAAA,EAAU9yF,IADD,CAI1D,gBAAI+yF,GACF,OAAOnB,EAAkBc,cAAc5gF,KAAK6G,KAD3B,CAYnB65E,gBAAAA,CAAiBT,GACf,MAAM,KACJp5E,EACA6jB,QAAQ,KAAEtJ,EAAF,SAAQ/K,IACdrW,KAEE2jC,EAAY37C,SAASG,cAAc,WACzCw7C,EAAU9Q,aAAa,qBAAsBhsB,EAAKoL,IAC5CjS,gBAAgB++E,IACpBp7C,EAAU7Q,SAAWkrD,GAQvBr6C,EAAUr7C,MAAMqnC,OAAS3vB,KAAK0qB,OAAOiF,SAEjC3vB,KAAK6G,KAAKq6E,UACZv9C,EAAU9Q,aAAa,gBAAiB,UAGtChsB,EAAKs6E,UACPx9C,EAAUxU,UAAUxW,IAAI,YAG1B,MAAM,UAAE8T,EAAF,WAAaC,EAAb,MAAyBC,EAAzB,MAAgCC,GAAUvW,EAASmW,QAEzD,IAAK3lB,EAAKtC,MAAQvE,gBAAgBg/E,EAAwB,CACxD,MAAM,SAAE/pE,GAAapO,EAIrB,OAHKA,EAAKspD,cAA6B,IAAbl7C,GACxBjV,KAAKohF,YAAYnsE,EAAU0uB,GAEtBA,CALiD,CAQ1D,MAAM,MAAEpf,EAAF,OAASC,GAAW05D,EAAYr3E,EAAKtC,MAIrCA,EAAO4C,EAAA3E,KAAK8B,cAAc,CAC9BuC,EAAKtC,KAAK,GACV6c,EAAKtM,KAAK,GAAKjO,EAAKtC,KAAK,GAAK6c,EAAKtM,KAAK,GACxCjO,EAAKtC,KAAK,GACV6c,EAAKtM,KAAK,GAAKjO,EAAKtC,KAAK,GAAK6c,EAAKtM,KAAK,KAG1C,IAAKmrE,GAAgBp5E,EAAKw6E,YAAY98D,MAAQ,EAAG,CAC/Cof,EAAUr7C,MAAMg5F,YAAhB,GAAA31F,OAAiCkb,EAAKw6E,YAAY98D,MAAM,MAExD,MAAMg9D,EAAmB16E,EAAKw6E,YAAYG,uBACpCC,EAAiB56E,EAAKw6E,YAAYK,qBACxC,GAAIH,EAAmB,GAAKE,EAAiB,EAAG,CAC9C,MAAME,EAAA,QAAAh2F,OAAiB41F,EAAiB,qCAAA51F,OAAmC81F,EAAe,6BAC1F99C,EAAUr7C,MAAMs5F,aAAeD,CAFe,MAGzC,GAAI3hF,gBAAgBy+E,EAAoC,CAC7D,MAAMkD,EAAA,QAAAh2F,OAAiB44B,EAAM,qCAAA54B,OAAmC64B,EAAO,6BACvEmf,EAAUr7C,MAAMs5F,aAAeD,CAF8B,CAK/D,OAAQ96E,EAAKw6E,YAAY/4F,OACvB,KAAK6e,EAAAtP,0BAA0BC,MAC7B6rC,EAAUr7C,MAAM+4F,YAAc,QAC9B,MAEF,KAAKl6E,EAAAtP,0BAA0BE,OAC7B4rC,EAAUr7C,MAAM+4F,YAAc,SAC9B,MAEF,KAAKl6E,EAAAtP,0BAA0BG,SAC7B,EAAAmP,EAAA5d,MAAK,uCACL,MAEF,KAAK4d,EAAAtP,0BAA0BI,OAC7B,EAAAkP,EAAA5d,MAAK,qCACL,MAEF,KAAK4d,EAAAtP,0BAA0B9C,UAC7B4uC,EAAUr7C,MAAMu5F,kBAAoB,QAOxC,MAAMC,EAAcj7E,EAAKi7E,aAAe,KACpCA,GACFh7E,sBAAAi5E,EAAA//E,MAAkB,GAClB2jC,EAAUr7C,MAAMw5F,YAAc36E,EAAA3E,KAAKC,aAChB,EAAjBq/E,EAAY,GACK,EAAjBA,EAAY,GACK,EAAjBA,EAAY,KAIdn+C,EAAUr7C,MAAMg5F,YAAc,CAhDe,CAoDjD39C,EAAUr7C,MAAMmpC,KAAhB,GAAA9lC,OAA2B,KAAO4Y,EAAK,GAAKooB,GAAUF,EAAU,KAChEkX,EAAUr7C,MAAMG,IAAhB,GAAAkD,OAA0B,KAAO4Y,EAAK,GAAKqoB,GAAUF,EAAW,KAEhE,MAAM,SAAEzX,GAAapO,EAQrB,OAPIA,EAAKspD,cAA6B,IAAbl7C,GACvB0uB,EAAUr7C,MAAMi8B,MAAhB,GAAA54B,OAA4B,IAAM44B,EAASkI,EAAU,KACrDkX,EAAUr7C,MAAMk8B,OAAhB,GAAA74B,OAA6B,IAAM64B,EAAUkI,EAAW,MAExD1sB,KAAKohF,YAAYnsE,EAAU0uB,GAGtBA,CA/GsB,CAkH/By9C,WAAAA,CAAYxqD,GAAmC,IAA5B+M,EAAAv4C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAY4U,KAAK2jC,UAClC,IAAK3jC,KAAK6G,KAAKtC,KACb,OAEF,MAAM,UAAEkoB,EAAF,WAAaC,GAAe1sB,KAAK0qB,OAAOrU,SAASmW,SACjD,MAAEjI,EAAF,OAASC,GAAW05D,EAAYl+E,KAAK6G,KAAKtC,MAEhD,IAAIw9E,EAAcC,EACdprD,EAAQ,MAAQ,GAClBmrD,EAAgB,IAAMx9D,EAASkI,EAC/Bu1D,EAAiB,IAAMx9D,EAAUkI,IAEjCq1D,EAAgB,IAAMv9D,EAAUiI,EAChCu1D,EAAiB,IAAMz9D,EAASmI,GAGlCiX,EAAUr7C,MAAMi8B,MAAhB,GAAA54B,OAA2Bo2F,EAAa,KACxCp+C,EAAUr7C,MAAMk8B,OAAhB,GAAA74B,OAA4Bq2F,EAAc,KAE1Cr+C,EAAU9Q,aAAa,sBAAuB,IAAM+D,GAAS,IAnBhB,CAsB/C,kBAAIqrD,GACF,MAAMC,EAAWA,CAACC,EAAQC,EAAWxlE,KACnC,MAAMwjB,EAAQxjB,EAAMylE,OAAOF,GACrBlW,EAAY7rC,EAAM,GAClBkiD,EAAaliD,EAAM58B,MAAM,GAC/BoZ,EAAMqT,OAAO3nC,MAAM85F,GACjBvE,EAAA0E,gBAAA,GAAA52F,OAAmBsgF,EAAU,UAAQqW,GACvCtiF,KAAKqR,kBAAkBiY,SAAStpB,KAAK6G,KAAKoL,GAAI,CAC5C,CAACmwE,GAAYvE,EAAA0E,gBAAA,GAAA52F,OAAmBsgF,EAAU,SAAOqW,IADnD,EAKF,OAAO,EAAAn7E,EAAA3H,QAAOQ,KAAM,iBAAkB,CACpCw9E,QAAS5gE,IACP,MAAM,QAAE4gE,GAAY5gE,EAAMylE,OAGpBnsD,EAASsnD,EAAU,IAAM,EAC/Bx9E,KAAK2jC,UAAUr7C,MAAMyhD,WAAa7T,EAAS,SAAW,UACtDl2B,KAAKqR,kBAAkBiY,SAAStpB,KAAK6G,KAAKoL,GAAI,CAC5CuwE,OAAQtsD,EACRusD,QAAqB,IAAZjF,GAA6B,IAAZA,GAF5B,EAKFzzD,MAAOnN,IACL5c,KAAKqR,kBAAkBiY,SAAStpB,KAAK6G,KAAKoL,GAAI,CAC5CwwE,SAAU7lE,EAAMylE,OAAOt4D,OADzB,EAIFmM,OAAQtZ,IACN,MAAM,OAAEsZ,GAAWtZ,EAAMylE,OACzBriF,KAAK2jC,UAAUr7C,MAAMyhD,WAAa7T,EAAS,SAAW,UACtDl2B,KAAKqR,kBAAkBiY,SAAStpB,KAAK6G,KAAKoL,GAAI,CAC5CwwE,QAASvsD,EACTssD,OAAQtsD,GAFV,EAKFH,MAAOnZ,IACLV,YAAW,IAAMU,EAAMqT,OAAO8F,MAAM,CAAE2lD,eAAe,KAAU,EAA/D,EAEFgH,SAAU9lE,IAERA,EAAMqT,OAAO0yD,MAAQ/lE,EAAMylE,OAAOK,QAAlC,EAEFE,SAAUhmE,IACRA,EAAMqT,OAAO4yD,SAAWjmE,EAAMylE,OAAOO,QAArC,EAEFE,SAAUlmE,IACR5c,KAAK+iF,aAAanmE,EAAMqT,OAAQrT,EAAMylE,OAAOS,SAA7C,EAEFp1C,QAAS9wB,IACPslE,EAAS,UAAW,kBAAmBtlE,EAAvC,EAEFs/B,UAAWt/B,IACTslE,EAAS,YAAa,kBAAmBtlE,EAAzC,EAEF6wB,QAAS7wB,IACPslE,EAAS,UAAW,QAAStlE,EAA7B,EAEFomE,UAAWpmE,IACTslE,EAAS,YAAa,QAAStlE,EAA/B,EAEFklE,YAAallE,IACXslE,EAAS,cAAe,cAAetlE,EAAvC,EAEFu/B,YAAav/B,IACXslE,EAAS,cAAe,cAAetlE,EAAvC,EAEF3H,SAAU2H,IACR,MAAMga,EAAQha,EAAMylE,OAAOptE,SAC3BjV,KAAKohF,YAAYxqD,GACjB52B,KAAKqR,kBAAkBiY,SAAStpB,KAAK6G,KAAKoL,GAAI,CAC5CgD,SAAU2hB,GADZ,GAvEe,CA8ErBqsD,yBAAAA,CAA0BC,EAASC,GACjC,MAAMC,EAAgBpjF,KAAKiiF,eAC3B,IAAK,MAAMz7F,KAAQsI,OAAOI,KAAKi0F,EAAQd,QAAS,CAC9C,MAAMjoD,EAAS8oD,EAAQ18F,IAAS48F,EAAc58F,GAC9C,OAAA4zC,QAAA,IAAAA,GAAAA,EAAS+oD,EAFqC,CAFN,CAQ5CE,2BAAAA,CAA4BnoD,GAC1B,IAAKl7B,KAAKugF,gBACR,OAIF,MAAM+C,EAAatjF,KAAKqR,kBAAkB8X,YAAYnpB,KAAK6G,KAAKoL,IAChE,IAAKqxE,EACH,OAGF,MAAMF,EAAgBpjF,KAAKiiF,eAC3B,IAAK,MAAOjmB,EAAYqmB,KAAWvzF,OAAO26B,QAAQ65D,GAAa,CAC7D,MAAMlpD,EAASgpD,EAAcpnB,GACzB5hC,IAOFA,EANmB,CACjBioD,OAAQ,CACN,CAACrmB,GAAaqmB,GAEhBpyD,OAAQiL,WAIHooD,EAAWtnB,GAXyC,CAZ5B,CAkCrC2kB,qBAAAA,GACE,IAAK3gF,KAAK2jC,UACR,OAEF,MAAM,WAAE4/C,GAAevjF,KAAK6G,KAC5B,IAAK08E,EACH,OAGF,MAAOC,EAASC,EAASC,EAASC,GAAW3jF,KAAK6G,KAAKtC,KAEvD,GAA0B,IAAtBg/E,EAAWl4F,OAAc,CAC3B,MAAO,EAAI6hC,EAAG02D,EAAKz2D,EAAG02D,IAAS32D,EAAG42D,EAAK32D,EAAG42D,IAASR,EAAW,GAC9D,GACEG,IAAYE,GACZD,IAAYE,GACZL,IAAYM,GACZL,IAAYM,EAIZ,MAVyB,CAc7B,MAAM,MAAEz7F,GAAU0X,KAAK2jC,UACvB,IAAIqgD,EACJ,GAAA/8E,sBAAA84E,EAAI//E,MAAiB,CACnB,MAAM,YAAE8hF,EAAF,YAAeR,GAAgBh5F,EACrCA,EAAMg5F,YAAc,EACpB0C,EAAY,CACV,gCADU,4HAAAr4F,OAIuBm2F,EAAY,oBAAAn2F,OAAkB21F,EAAY,OAE7EthF,KAAK2jC,UAAUxU,UAAUxW,IAAI,YATV,CAgBrB,MAAM4L,EAAQm/D,EAAUF,EAClBh/D,EAASm/D,EAAUF,GAEnB,WAAElW,GAAevtE,KACjBuvC,EAAMg+B,EAAWplF,cAAc,OACrConD,EAAIpgB,UAAUxW,IAAI,2BAClB42B,EAAI1c,aAAa,QAAS,GAC1B0c,EAAI1c,aAAa,SAAU,GAC3B,MAAM28C,EAAOjC,EAAWplF,cAAc,QACtConD,EAAIpc,OAAOq8C,GACX,MAAM+B,EAAWhE,EAAWplF,cAAc,YACpC8pB,EAAA,YAAAtmB,OAAiBqU,KAAK6G,KAAKoL,IACjCs/D,EAAS1+C,aAAa,KAAM5gB,GAC5Bs/D,EAAS1+C,aAAa,gBAAiB,qBACvC28C,EAAKr8C,OAAOo+C,GAEZ,IAAK,MAAO,EAAIrkD,EAAG02D,EAAKz2D,EAAG02D,IAAS32D,EAAG42D,EAAK32D,EAAG42D,MAAUR,EAAY,KAAAU,EACnE,MAAM1/E,EAAOgpE,EAAWplF,cAAc,QAChC+kC,GAAK42D,EAAMN,GAAWj/D,EACtB4I,GAAKw2D,EAAUE,GAAOr/D,EACtB0/D,GAAaN,EAAME,GAAOv/D,EAC1B4/D,GAAcN,EAAME,GAAOv/D,EACjCjgB,EAAKsuB,aAAa,IAAK3F,GACvB3oB,EAAKsuB,aAAa,IAAK1F,GACvB5oB,EAAKsuB,aAAa,QAASqxD,GAC3B3/E,EAAKsuB,aAAa,SAAUsxD,GAC5B5S,EAASp+C,OAAO5uB,GAChB,QAAA0/E,EAAAD,SAAA,IAAAC,GAAAA,EAAW7zF,KAAX,+CAAAzE,OACiDuhC,EAAE,SAAAvhC,OAAOwhC,EAAE,aAAAxhC,OAAWu4F,EAAU,cAAAv4F,OAAYw4F,EAAW,OAZrC,CAgBrEl9E,sBAAA84E,EAAI//E,QACFgkF,EAAU5zF,KAAV,gBACA9H,EAAM87F,gBAAkBJ,EAAUp3F,KAAK,KAGzCoT,KAAK2jC,UAAUxQ,OAAOoc,GACtBvvC,KAAK2jC,UAAUr7C,MAAMipF,SAArB,QAAA5lF,OAAwCsmB,EAAG,IAjFrB,CA4FxBoyE,YAAAA,GACE,MAAM,UAAE1gD,EAAF,KAAa98B,GAAS7G,KAC5B2jC,EAAU9Q,aAAa,gBAAiB,UAExC,MAAMyxD,EAAQ,IAAItF,EAAuB,CACvCn4E,KAAM,CACJu5B,MAAOv5B,EAAKu5B,MACZ0gD,SAAUj6E,EAAKi6E,SACfyD,iBAAkB19E,EAAK09E,iBACvBxD,YAAal6E,EAAKk6E,YAClBC,SAAUn6E,EAAKm6E,SACfwD,WAAY39E,EAAKtC,KACjB88E,YAAa,EACbpvE,GAAA,SAAAtmB,OAAakb,EAAKoL,IAClBgD,SAAUpO,EAAKoO,UAEjByV,OAAQ1qB,KAAK0qB,OACb+5D,SAAU,CAACzkF,QAEbA,KAAK0qB,OAAOsB,IAAImH,OAAOmxD,EAAMtuE,SAnBhB,CA4BfA,MAAAA,IACE,EAAA7O,EAAAlc,aAAY,oDADL,CAQTy5F,kBAAAA,CAAmBl+F,GAAqB,IAAfm+F,EAAAv5F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAS,KAChC,MAAMw5F,EAAS,GAEf,GAAI5kF,KAAKwgF,cAAe,CACtB,MAAMqE,EAAW7kF,KAAKwgF,cAAch6F,GACpC,GAAIq+F,EACF,IAAK,MAAM,KAAEzjE,EAAF,GAAQnP,EAAR,aAAY6yE,KAAkBD,EAAU,CACjD,IAAc,IAAVzjE,EACF,SAEF,GAAInP,IAAO0yE,EACT,SAEF,MAAMI,EACoB,kBAAjBD,EAA4BA,EAAe,KAE9CE,EAAah9F,SAASi9F,cAAT,qBAAAt5F,OACIsmB,EAAG,QAEtB+yE,GAAe/G,EAAqB3/D,IAAI0mE,GAI5CJ,EAAOx0F,KAAK,CAAE6hB,KAAI8yE,cAAaC,gBAH7B,EAAA79E,EAAA5d,MAAA,6CAAAoC,OAAkDsmB,GAdH,CAoBrD,OAAO2yE,CAvBe,CA2BxB,IAAK,MAAMI,KAAch9F,SAASk9F,kBAAkB1+F,GAAO,CACzD,MAAM,YAAEu+F,GAAgBC,EAClB/yE,EAAK+yE,EAAWG,aAAa,mBAC/BlzE,IAAO0yE,GAGN1G,EAAqB3/D,IAAI0mE,IAG9BJ,EAAOx0F,KAAK,CAAE6hB,KAAI8yE,cAAaC,cAT0B,CAW3D,OAAOJ,CAzC+B,CA4CxCjM,IAAAA,GAAO,IAAAyM,EACDplF,KAAK2jC,YACP3jC,KAAK2jC,UAAUzN,QAAS,GAE1B,QAAAkvD,EAAAplF,KAAKskF,aAAL,IAAAc,GAAAA,EAAYC,WAJP,CAOP9M,IAAAA,GAAO,IAAA+M,EACDtlF,KAAK2jC,YACP3jC,KAAK2jC,UAAUzN,QAAS,GAE1B,QAAAovD,EAAAtlF,KAAKskF,aAAL,IAAAgB,GAAAA,EAAYC,WAJP,CAePC,yBAAAA,GACE,OAAOxlF,KAAK2jC,SADc,CAI5B8hD,gBAAAA,GACE,MAAMC,EAAW1lF,KAAKwlF,4BACtB,GAAIp/F,MAAMC,QAAQq/F,GAChB,IAAK,MAAMxqD,KAAWwqD,EACpBxqD,EAAQ/L,UAAUxW,IAAI,sBAGxB+sE,EAASv2D,UAAUxW,IAAI,gBAPR,CAWnBgtE,kBAAAA,GACE,MACEjM,qBAAsB1xC,EACtBnhC,MAAQoL,GAAIg2B,IACVjoC,KACJA,KAAK2jC,UAAU36C,iBAAiB,YAAY,KAAM,IAAA48F,EAChD,QAAAA,EAAA5lF,KAAKmgF,YAAYr8C,gBAAjB,IAAA8hD,GAAAA,EAA2B1rD,SAAS,6BAA8B,CAChE1rB,OAAQxO,KACRgoC,OACAC,UAHF,GANiB,EAlgBC,IAAA49C,EAAA,IAAAhyE,QAihBxB,MAAMuqE,UAA8B0B,EAClC7/E,WAAAA,CAAY2rB,GAA4B,IAAhBpkC,EAAA4D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAU,KAChCuV,MAAMirB,EAAY,CAChBo0D,cAAc,EACdC,eAAgB,OAAAz4F,QAAA,IAAAA,IAAAA,EAASy4F,cACzBC,sBAAsB,IAHxBjsE,4BAAA,KAAA4xE,GAKA7lF,KAAK8lF,cAAgBl6D,EAAW/kB,KAAKi/E,aANC,CASxC9vE,MAAAA,GACE,MAAM,KAAEnP,EAAF,YAAQs5E,GAAgBngF,KACxB+lF,EAAO/9F,SAASG,cAAc,KACpC49F,EAAKlzD,aAAa,kBAAmBhsB,EAAKoL,IAC1C,IAAI+zE,GAAU,EA4Cd,OA1CIn/E,EAAK3b,KACPi1F,EAAY8F,kBAAkBF,EAAMl/E,EAAK3b,IAAK2b,EAAKq/E,WACnDF,GAAU,GACDn/E,EAAKuzB,QACdp6B,KAAKmmF,iBAAiBJ,EAAMl/E,EAAKuzB,QACjC4rD,GAAU,GACDn/E,EAAKu/E,YACdpmF,KAAKqmF,gBAAgBN,EAAMl/E,EAAKu/E,YAChCJ,GAAU,GACDn/E,EAAKy/E,aACdzvE,kBAAAgvE,EAAA7lF,KAAAumF,GAAAlkF,KAAArC,KAAsB+lF,EAAMl/E,EAAKy/E,aACjCN,GAAU,GACDn/E,EAAK63C,MACd1+C,KAAKwmF,UAAUT,EAAMl/E,EAAK63C,MAC1BsnC,GAAU,IAGRn/E,EAAKq8E,UACJr8E,EAAKq8E,QAAQuD,QACZ5/E,EAAKq8E,QAAQ,aACbr8E,EAAKq8E,QAAQ,gBACfljF,KAAKugF,iBACLvgF,KAAKwT,eAELxT,KAAK0mF,cAAcX,EAAMl/E,GACzBm/E,GAAU,GAGRn/E,EAAK8/E,WACP3mF,KAAK4mF,qBAAqBb,EAAMl/E,EAAK8/E,WACrCX,GAAU,GACDhmF,KAAK8lF,gBAAkBE,IAChChmF,KAAKwmF,UAAUT,EAAM,IACrBC,GAAU,IAIdhmF,KAAK2jC,UAAUxU,UAAUxW,IAAI,kBACzBqtE,GACFhmF,KAAK2jC,UAAUxQ,OAAO4yD,GAGjB/lF,KAAK2jC,SAhDL,CA+DT6iD,SAAAA,CAAUT,EAAMc,GACdd,EAAKp3E,KAAO3O,KAAKmgF,YAAY2G,mBAAmBD,GAChDd,EAAKgB,QAAU,KACTF,GACF7mF,KAAKmgF,YAAY6G,gBAAgBH,IAE5B,IAELA,GAAqD,KAAtCA,IACjBhwE,kBAAAgvE,EAAA7lF,KAAAinF,GAAA5kF,KAAArC,KATyB,CAqB7BmmF,gBAAAA,CAAiBJ,EAAM3rD,GACrB2rD,EAAKp3E,KAAO3O,KAAKmgF,YAAY+G,aAAa,IAC1CnB,EAAKgB,QAAU,KACb/mF,KAAKmgF,YAAYgH,mBAAmB/sD,IAC7B,GAETvjB,kBAAAgvE,EAAA7lF,KAAAinF,GAAA5kF,KAAArC,KAN6B,CAc/BqmF,eAAAA,CAAgBN,EAAMK,GACpBL,EAAKp3E,KAAO3O,KAAKmgF,YAAY+G,aAAa,IAC1CnB,EAAKgB,QAAU,KAAM,IAAAK,EAMnB,OALA,QAAAA,EAAApnF,KAAKogF,uBAAL,IAAAgH,GAAAA,EAAsBC,mBACpBrnF,KAAK2jC,UACLyiD,EAAWkB,QACXlB,EAAWthE,WAEN,CAAP,EAEFjO,kBAAAgvE,EAAA7lF,KAAAinF,GAAA5kF,KAAArC,KAVgC,CAmClC0mF,aAAAA,CAAcX,EAAMl/E,GAClBk/E,EAAKp3E,KAAO3O,KAAKmgF,YAAY+G,aAAa,IAC1C,MAAMt4F,EAAM,IAAIP,IAAI,CAClB,CAAC,SAAU,WACX,CAAC,WAAY,aACb,CAAC,aAAc,iBAEjB,IAAK,MAAM7H,KAAQsI,OAAOI,KAAK2X,EAAKq8E,SAAU,CAC5C,MAAMf,EAASvzF,EAAID,IAAInI,GAClB27F,IAGL4D,EAAK5D,GAAU,KAAM,IAAAoF,EAQnB,OAPA,QAAAA,EAAAvnF,KAAKmgF,YAAYr8C,gBAAjB,IAAAyjD,GAAAA,EAA2BrtD,SAAS,yBAA0B,CAC5D1rB,OAAQxO,KACRqiF,OAAQ,CACNpwE,GAAIpL,EAAKoL,GACTzrB,WAGG,CAAP,EAb0C,CAiBzCu/F,EAAKgB,UACRhB,EAAKgB,QAAU,KAAM,GAEvBlwE,kBAAAgvE,EAAA7lF,KAAAinF,GAAA5kF,KAAArC,KA3BwB,CA8B1B4mF,oBAAAA,CAAqBb,EAAMY,GACzB,MAAMa,EAAmBzB,EAAKgB,QAM9B,GALKS,IACHzB,EAAKp3E,KAAO3O,KAAKmgF,YAAY+G,aAAa,KAE5CrwE,kBAAAgvE,EAAA7lF,KAAAinF,GAAA5kF,KAAArC,OAEKA,KAAKwgF,cAQR,OAPA,EAAAr5E,EAAA5d,MACG,uHAGEi+F,IACHzB,EAAKgB,QAAU,KAAM,IAKzBhB,EAAKgB,QAAU,KACb,OAAAS,QAAA,IAAAA,GAAAA,IAEA,MACE5C,OAAQ6C,EACRC,KAAMC,EAFF,QAGJC,GACEjB,EAEEkB,EAAY,GAClB,GAA+B,IAA3BJ,EAAgBp8F,QAAyC,IAAzBs8F,EAAct8F,OAAc,CAC9D,MAAMy8F,EAAW,IAAIpvE,IAAIivE,GACzB,IAAK,MAAMI,KAAaN,EAAiB,CACvC,MAAM7C,EAAS5kF,KAAKwgF,cAAcuH,IAAc,GAChD,IAAK,MAAM,GAAE91E,KAAQ2yE,EACnBkD,EAASnvE,IAAI1G,EAHwB,CAMzC,IAAK,MAAM2yE,KAAU91F,OAAOgsB,OAAO9a,KAAKwgF,eACtC,IAAK,MAAMwH,KAASpD,EACdkD,EAASxpE,IAAI0pE,EAAM/1E,MAAQ21E,GAC7BC,EAAUz3F,KAAK43F,EAXyC,MAgB9D,IAAK,MAAMpD,KAAU91F,OAAOgsB,OAAO9a,KAAKwgF,eACtCqH,EAAUz3F,QAAQw0F,GAItB,MAAMqD,EAAUjoF,KAAKqR,kBACf62E,EAAS,GACf,IAAK,MAAMF,KAASH,EAAW,CAC7B,MAAM,GAAE51E,GAAO+1E,EAEf,OADAE,EAAO93F,KAAK6hB,GACJ+1E,EAAMthG,MACZ,IAAK,OAAQ,CACX,MAAMuI,EAAQ+4F,EAAM9+D,cAAgB,GACpC++D,EAAQ3+D,SAASrX,EAAI,CAAEhjB,UACvB,KAHW,CAKb,IAAK,WACL,IAAK,cAAe,CAClB,MAAMA,EAAQ+4F,EAAM9+D,eAAiB8+D,EAAMlD,aAC3CmD,EAAQ3+D,SAASrX,EAAI,CAAEhjB,UACvB,KAHkB,CAKpB,IAAK,WACL,IAAK,UAAW,CACd,MAAMA,EAAQ+4F,EAAM9+D,cAAgB,GACpC++D,EAAQ3+D,SAASrX,EAAI,CAAEhjB,UACvB,KAHc,CAKhB,QACE,SAGJ,MAAM+1F,EAAah9F,SAASi9F,cAAT,qBAAAt5F,OAA4CsmB,EAAG,OAC7D+yE,IAEO/G,EAAqB3/D,IAAI0mE,GAIrCA,EAAWmD,cAAc,IAAIC,MAAM,eAHjC,EAAAjhF,EAAA5d,MAAA,+CAAAoC,OAAoDsmB,IA7BzB,CAmCL,IAAAo2E,EAY1B,OAZIroF,KAAKugF,kBAEP,QAAA8H,EAAAroF,KAAKmgF,YAAYr8C,gBAAjB,IAAAukD,GAAAA,EAA2BnuD,SAAS,yBAA0B,CAC5D1rB,OAAQxO,KACRqiF,OAAQ,CACNpwE,GAAI,MACJqsD,IAAK4pB,EACL1hG,KAAM,iBAKL,CAAP,CAlGkC,EA7Kc,SAAAygG,IA8DlDjnF,KAAK2jC,UAAU9Q,aAAa,qBAAsB,GADjC,UAAA0zD,EAiEFR,EAAM3rD,GACrB2rD,EAAKp3E,KAAO3O,KAAKmgF,YAAY+G,aAAa,IAC1CnB,EAAKgB,QAAU,KACb/mF,KAAKmgF,YAAYmI,mBAAmBluD,IAC7B,GAETvjB,kBAAAgvE,EAAA7lF,KAAAinF,GAAA5kF,KAAArC,KAN6B,CAsJjC,MAAMq+E,UAA8ByB,EAClC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,cAAc,GADZ,CAIxBhqE,MAAAA,GACEhW,KAAK2jC,UAAUxU,UAAUxW,IAAI,kBAE7B,MAAMwjB,EAAQn0C,SAASG,cAAc,OAerC,OAdAg0C,EAAM/yB,IACJpJ,KAAKqgF,mBACL,cACArgF,KAAK6G,KAAKrgB,KAAKG,cACf,OACFw1C,EAAMosD,IAAM,wBACZpsD,EAAMk5C,QAAQmT,OAAS,uBACvBrsD,EAAMk5C,QAAQoT,SAAWn+D,KAAKC,UAAU,CAAE7jC,KAAMsZ,KAAK6G,KAAKrgB,QAErDwZ,KAAK6G,KAAKq6E,UAAYlhF,KAAKihF,cAC9BjhF,KAAKqkF,eAGPrkF,KAAK2jC,UAAUxQ,OAAOgJ,GACfn8B,KAAK2jC,SAlBL,EAsBX,MAAMo7C,UAAgCe,EACpC9pE,MAAAA,GAME,OAJIhW,KAAK6G,KAAK6hF,kBACZ1oF,KAAK2jC,UAAUg/C,MAAQ3iF,KAAK6G,KAAK6hF,iBAG5B1oF,KAAK2jC,SANL,CASTglD,wBAAAA,CAAyBztD,GACK,IAAA0tD,EAAxB5oF,KAAK6G,KAAKspD,eAC8B,YAAtC,QAAAy4B,EAAA1tD,EAAQ2tD,uBAAR,IAAAD,OAAA,EAAAA,EAAyBE,YAC3B5tD,EAAQ2tD,gBAAgB3yD,QAAS,GAEnCgF,EAAQhF,QAAS,EALa,CASlC6yD,eAAAA,CAAgBnsE,GACd,MAAM,MAAE/a,EAAF,MAASC,GAAUqF,EAAA/F,YAAYQ,SACrC,OAAQC,GAAS+a,EAAMkX,SAAahyB,GAAS8a,EAAMke,OAF9B,CAKvBkuD,iBAAAA,CAAkB9tD,EAAS+tD,EAAaC,EAAUC,EAAWC,GACvDF,EAASnnF,SAAS,SAEpBm5B,EAAQlyC,iBAAiBkgG,GAAUtsE,IAAS,IAAAysE,EAC1C,QAAAA,EAAArpF,KAAKmgF,YAAYr8C,gBAAjB,IAAAulD,GAAAA,EAA2BnvD,SAAS,yBAA0B,CAC5D1rB,OAAQxO,KACRqiF,OAAQ,CACNpwE,GAAIjS,KAAK6G,KAAKoL,GACdzrB,KAAM2iG,EACNl6F,MAAOm6F,EAAYxsE,GACnBs6B,MAAOt6B,EAAMie,SACbyuD,SAAUtpF,KAAK+oF,gBAAgBnsE,KAPnC,IAaFse,EAAQlyC,iBAAiBkgG,GAAUtsE,IAAS,IAAA2sE,EAC1C,GAAiB,SAAbL,EAAqB,CACvB,IAAKD,EAAYO,UAAY5sE,EAAMsT,cACjC,OAEF+4D,EAAYO,SAAU,CAJC,MAKlB,GAAiB,UAAbN,EAAsB,CAC/B,GAAID,EAAYO,QACd,OAEFP,EAAYO,SAAU,CAJS,CAO5BJ,IAIL,QAAAG,EAAAvpF,KAAKmgF,YAAYr8C,gBAAjB,IAAAylD,GAAAA,EAA2BrvD,SAAS,yBAA0B,CAC5D1rB,OAAQxO,KACRqiF,OAAQ,CACNpwE,GAAIjS,KAAK6G,KAAKoL,GACdzrB,KAAM2iG,EACNl6F,MAAOm6F,EAAYxsE,MALvB,GAlCoE,CA8C1E6sE,kBAAAA,CAAmBvuD,EAAS+tD,EAAa9tD,EAAOuuD,GAC9C,IAAK,MAAOR,EAAUC,KAAchuD,EAAO,KAAAwuD,EACqBC,EAAAC,GAA5C,WAAdV,GAA0B,QAA1BQ,EAA0B3pF,KAAK6G,KAAKq8E,eAAV,IAAAyG,GAAAA,EAAoBR,MAC9B,UAAdA,GAAuC,SAAdA,GAC3BF,IAAAA,EAAgB,CAAEO,SAAS,IAE7BxpF,KAAKgpF,kBACH9tD,EACA+tD,EACAC,EACAC,EACAO,GAEgB,UAAdP,GAA0B,QAADS,EAAC5pF,KAAK6G,KAAKq8E,eAAV,IAAA0G,GAAAA,EAAmBE,KAGxB,SAAdX,GAAyB,QAADU,EAAC7pF,KAAK6G,KAAKq8E,eAAV,IAAA2G,GAAAA,EAAmBE,OACrD/pF,KAAKgpF,kBAAkB9tD,EAAS+tD,EAAa,QAAS,QAAS,MAF/DjpF,KAAKgpF,kBAAkB9tD,EAAS+tD,EAAa,OAAQ,OAAQ,MAdxB,CADW,CAuBxDe,mBAAAA,CAAoB9uD,GAClB,MAAMkF,EAAQpgC,KAAK6G,KAAKkwD,iBAAmB,KAC3C77B,EAAQ5yC,MAAMyuE,gBACF,OAAV32B,EACI,cACAj5B,EAAA3E,KAAKC,aAAa29B,EAAM,GAAIA,EAAM,GAAIA,EAAM,GALvB,CAe7B6pD,aAAAA,CAAc/uD,GACZ,MAAMgvD,EAAiB,CAAC,OAAQ,SAAU,UACpC,UAAErN,GAAc78E,KAAK6G,KAAK+1E,sBAC1BvhC,EACJr7C,KAAK6G,KAAK+1E,sBAAsBvhC,UAhiCZ,EAkiChB/yD,EAAQ4yC,EAAQ5yC,MAWtB,IAAI6hG,EACJ,MACMC,EAAoBl9D,GAAK7/B,KAAK6kC,MAAM,GAAKhF,GAAK,GACpD,GAAIltB,KAAK6G,KAAKwjF,UAAW,CACvB,MAAM7lE,EAASn3B,KAAK0Y,IAClB/F,KAAK6G,KAAKtC,KAAK,GAAKvE,KAAK6G,KAAKtC,KAAK,GAJnB,GAOZ+lF,EAAa9lE,GADGn3B,KAAK6kC,MAAM1N,GAAUrd,EAAApW,YAAcsqD,KAAc,GAEvE8uC,EAAmB98F,KAAKkT,IACtB86C,EACA+uC,EAAkBE,EAAanjF,EAAApW,aARV,KAUlB,CACL,MAAMyzB,EAASn3B,KAAK0Y,IAClB/F,KAAK6G,KAAKtC,KAAK,GAAKvE,KAAK6G,KAAKtC,KAAK,GAdnB,GAgBlB4lF,EAAmB98F,KAAKkT,IACtB86C,EACA+uC,EAAkB5lE,EAASrd,EAAApW,aANxB,CASPzI,EAAM+yD,SAAN,QAAA1vD,OAAyBw+F,EAAiB,6BAE1C7hG,EAAM83C,MAAQj5B,EAAA3E,KAAKC,aAAao6E,EAAU,GAAIA,EAAU,GAAIA,EAAU,IAEtC,OAA5B78E,KAAK6G,KAAK0jF,gBACZjiG,EAAMkiG,UAAYN,EAAelqF,KAAK6G,KAAK0jF,eA5CxB,CAgDvBxH,YAAAA,CAAa7nD,EAASuvD,GAChBA,EACFvvD,EAAQrI,aAAa,YAAY,GAEjCqI,EAAQugD,gBAAgB,YAE1BvgD,EAAQrI,aAAa,gBAAiB43D,EANN,EAUpC,MAAMlM,UAAoCQ,EACxC9+E,WAAAA,CAAY2rB,GAIVjrB,MAAMirB,EAAY,CAAEo0D,aAFlBp0D,EAAW00D,cACT10D,EAAW/kB,KAAK6jF,iBAAmB9+D,EAAW/kB,KAAK8jF,YAHjC,CAOxBC,qBAAAA,CAAsBntE,EAAMzuB,EAAKC,EAAO47F,GACtC,MAAM5C,EAAUjoF,KAAKqR,kBACrB,IAAK,MAAM6pB,KAAWl7B,KAAK0kF,mBACzBjnE,EAAKj3B,KACUi3B,EAAKxL,IAEhBipB,EAAQ8pD,aACV9pD,EAAQ8pD,WAAWh2F,GAAOC,GAE5Bg5F,EAAQ3+D,SAAS4R,EAAQjpB,GAAI,CAAE,CAAC44E,GAAe57F,GATG,CAatD+mB,MAAAA,GACE,MAAMiyE,EAAUjoF,KAAKqR,kBACfY,EAAKjS,KAAK6G,KAAKoL,GAErBjS,KAAK2jC,UAAUxU,UAAUxW,IAAI,wBAE7B,IAAIuiB,EAAU,KACd,GAAIl7B,KAAKsgF,YAAa,KAAAwK,EAIpB,MAAMxH,EAAa2E,EAAQh/D,SAAShX,EAAI,CACtChjB,MAAO+Q,KAAK6G,KAAK8jF,aAEnB,IAAIviG,EAAck7F,EAAWr0F,OAAS,GACtC,MAAM87F,EAAS9C,EAAQh/D,SAAShX,EAAI,CAClC+4E,UAAWhrF,KAAK6G,KAAKkkF,SACpBC,UACCD,GAAU3iG,EAAYiD,OAAS0/F,IACjC3iG,EAAcA,EAAYob,MAAM,EAAGunF,IAGrC,IAAIE,EACF3H,EAAW4H,iBAAkB,QAA7BJ,EAA6B9qF,KAAK6G,KAAKze,mBAAV,IAAA0iG,OAAA,EAAAA,EAAuBl+F,KAAK,QAAS,KAChEq+F,GAAwBjrF,KAAK6G,KAAKskF,OACpCF,EAAuBA,EAAqB38F,WAAW,OAAQ,KAGjE,MAAM26F,EAAc,CAClBmC,UAAWhjG,EACX8iG,eAAgBD,EAChBI,mBAAoB,KACpBC,UAAW,EACX9B,SAAS,GAGc,IAAA+B,EAMlBC,EANHxrF,KAAK6G,KAAKwjF,WACZnvD,EAAUlzC,SAASG,cAAc,YACjC+yC,EAAQ9yC,YAAc,QAAtBmjG,EAAsBN,SAAA,IAAAM,EAAAA,EAAwBnjG,EAC1C4X,KAAK6G,KAAK4kF,cACZvwD,EAAQ5yC,MAAMojG,UAAY,YAG5BxwD,EAAUlzC,SAASG,cAAc,SACjC+yC,EAAQx0C,KAAO,OACfw0C,EAAQrI,aAAa,QAAS,QAA9B24D,EAA8BP,SAAA,IAAAO,EAAAA,EAAwBpjG,GAClD4X,KAAK6G,KAAK4kF,cACZvwD,EAAQ5yC,MAAMqjG,UAAY,WAG1B3rF,KAAK6G,KAAKspD,eACZj1B,EAAQhF,QAAS,GAEnB+nD,EAAqBtlE,IAAIuiB,GACzBA,EAAQrI,aAAa,kBAAmB5gB,GAExCipB,EAAQ2nD,SAAW7iF,KAAK6G,KAAK+kF,SAC7B1wD,EAAQ10C,KAAOwZ,KAAK6G,KAAKkhF,UACzB7sD,EAAQpI,SAAWkrD,EAEnBh+E,KAAK+iF,aAAa7nD,EAASl7B,KAAK6G,KAAKi8E,UAEjCiI,IACF7vD,EAAQ2wD,UAAYd,GAGtB7vD,EAAQlyC,iBAAiB,SAAS4zB,IAChCqrE,EAAQ3+D,SAASrX,EAAI,CAAEhjB,MAAO2tB,EAAMqT,OAAOhhC,QAC3C+Q,KAAK4qF,sBACH1vD,EACA,QACAte,EAAMqT,OAAOhhC,MACb,SAEFg6F,EAAYiC,eAAiB,IAA7B,IAGFhwD,EAAQlyC,iBAAiB,aAAa4zB,IAAS,IAAAkvE,EAC7C,MAAM5iE,EAAe,QAAf4iE,EAAe9rF,KAAK6G,KAAKklF,yBAAV,IAAAD,EAAAA,EAA+B,GACpD5wD,EAAQjsC,MAAQg6F,EAAYmC,UAAYliE,EACxC+/D,EAAYiC,eAAiB,IAA7B,IAGF,IAAIc,EAAepvE,IACjB,MAAM,eAAEsuE,GAAmBjC,EACJ,OAAnBiC,QAA8C5/F,IAAnB4/F,IAC7BtuE,EAAMqT,OAAOhhC,MAAQi8F,GAGvBtuE,EAAMqT,OAAOg8D,WAAa,CAA1B,EAGF,GAAIjsF,KAAKugF,iBAAmBvgF,KAAKwT,aAAc,KAAA04E,EAC7ChxD,EAAQlyC,iBAAiB,SAAS4zB,IAChC,GAAIqsE,EAAYO,QACd,OAEF,MAAM,OAAEv5D,GAAWrT,EACfqsE,EAAYmC,YACdn7D,EAAOhhC,MAAQg6F,EAAYmC,WAE7BnC,EAAYoC,mBAAqBp7D,EAAOhhC,MACxCg6F,EAAYqC,UAAY,EACxBrC,EAAYO,SAAU,CAAtB,IAGFtuD,EAAQlyC,iBAAiB,qBAAqBm6F,IAC5CnjF,KAAK2oF,yBAAyBxF,EAAQlzD,QACtC,MAAMizD,EAAU,CACdj0F,KAAAA,CAAM2tB,GAAO,IAAAuvE,EACXlD,EAAYmC,UAAY,QAAxBe,EAAwBvvE,EAAMylE,OAAOpzF,aAAb,IAAAk9F,EAAAA,EAAsB,GAC9ClE,EAAQ3+D,SAASrX,EAAI,CAAEhjB,MAAOg6F,EAAYmC,UAAU/+F,aACpDuwB,EAAMqT,OAAOhhC,MAAQg6F,EAAYmC,SAHtB,EAKbF,cAAAA,CAAetuE,GACb,MAAM,eAAEsuE,GAAmBtuE,EAAMylE,OACjC4G,EAAYiC,eAAiBA,EAER,OAAnBA,QACmB5/F,IAAnB4/F,GACAtuE,EAAMqT,SAAWjoC,SAAS8tC,gBAG1BlZ,EAAMqT,OAAOhhC,MAAQi8F,GAEvBjD,EAAQ3+D,SAASrX,EAAI,CACnBi5E,kBAZkB,EAetBkB,QAAAA,CAASxvE,GACPA,EAAMqT,OAAOo8D,qBAAqBzvE,EAAMylE,OAAO+J,SADjC,EAGhBpB,UAAWpuE,IAAS,IAAA0vE,EAClB,MAAM,UAAEtB,GAAcpuE,EAAMylE,QACtB,OAAEpyD,GAAWrT,EACnB,GAAkB,IAAdouE,EAEF,YADA/6D,EAAOwrD,gBAAgB,aAIzBxrD,EAAO4C,aAAa,YAAam4D,GACjC,IAAI/7F,EAAQg6F,EAAYmC,WACnBn8F,GAASA,EAAM5D,QAAU2/F,IAG9B/7F,EAAQA,EAAMuU,MAAM,EAAGwnF,GACvB/6D,EAAOhhC,MAAQg6F,EAAYmC,UAAYn8F,EACvCg5F,EAAQ3+D,SAASrX,EAAI,CAAEhjB,UAEvB,QAAAq9F,EAAAtsF,KAAKmgF,YAAYr8C,gBAAjB,IAAAwoD,GAAAA,EAA2BpyD,SAAS,yBAA0B,CAC5D1rB,OAAQxO,KACRqiF,OAAQ,CACNpwE,KACAzrB,KAAM,YACNyI,QACAs9F,YAAY,EACZjB,UAAW,EACXkB,SAAUv8D,EAAOw8D,eACjBC,OAAQz8D,EAAO08D,gBATnB,GAcJ3sF,KAAKijF,0BAA0BC,EAASC,EAAxC,IAKFjoD,EAAQlyC,iBAAiB,WAAW4zB,IAAS,IAAAgwE,EAC3C3D,EAAYqC,UAAY,EAGxB,IAAIA,GAAa,EAWjB,GAVkB,WAAd1uE,EAAM5tB,IACRs8F,EAAY,EACW,UAAd1uE,EAAM5tB,KAAoBgR,KAAK6G,KAAKwjF,UAKtB,QAAdztE,EAAM5tB,MACfi6F,EAAYqC,UAAY,GAFxBA,EAAY,GAIK,IAAfA,EACF,OAEF,MAAM,MAAEr8F,GAAU2tB,EAAMqT,OACpBg5D,EAAYoC,qBAAuBp8F,IAGvCg6F,EAAYoC,mBAAqBp8F,EAEjCg6F,EAAYmC,UAAYn8F,EACxB,QAAA29F,EAAA5sF,KAAKmgF,YAAYr8C,gBAAjB,IAAA8oD,GAAAA,EAA2B1yD,SAAS,yBAA0B,CAC5D1rB,OAAQxO,KACRqiF,OAAQ,CACNpwE,KACAzrB,KAAM,YACNyI,QACAs9F,YAAY,EACZjB,YACAkB,SAAU5vE,EAAMqT,OAAOw8D,eACvBC,OAAQ9vE,EAAMqT,OAAO08D,gBATzB,IAaF,MAAME,EAAgBb,EACtBA,EAAe,KACf9wD,EAAQlyC,iBAAiB,QAAQ4zB,IAC/B,IAAKqsE,EAAYO,UAAY5sE,EAAMsT,cACjC,OAEF+4D,EAAYO,SAAU,EACtB,MAAM,MAAEv6F,GAAU2tB,EAAMqT,OAEsB,IAAA68D,EAD9C7D,EAAYmC,UAAYn8F,EACpBg6F,EAAYoC,qBAAuBp8F,IACrC,QAAA69F,EAAA9sF,KAAKmgF,YAAYr8C,gBAAjB,IAAAgpD,GAAAA,EAA2B5yD,SAAS,yBAA0B,CAC5D1rB,OAAQxO,KACRqiF,OAAQ,CACNpwE,KACAzrB,KAAM,YACNyI,QACAs9F,YAAY,EACZjB,UAAWrC,EAAYqC,UACvBkB,SAAU5vE,EAAMqT,OAAOw8D,eACvBC,OAAQ9vE,EAAMqT,OAAO08D,iBAI3BE,EAAcjwE,EAAd,IAGE,QAAJsvE,EAAIlsF,KAAK6G,KAAKq8E,eAAV,IAAAgJ,GAAAA,EAAmBa,WACrB7xD,EAAQlyC,iBAAiB,eAAe4zB,IAAS,IAAAowE,EAC/C/D,EAAYoC,mBAAqB,KACjC,MAAM,KAAExkF,EAAF,OAAQopB,GAAWrT,GACnB,MAAE3tB,EAAF,eAASw9F,EAAT,aAAyBE,GAAiB18D,EAEhD,IAAIu8D,EAAWC,EACbC,EAASC,EAEX,OAAQ/vE,EAAMqwE,WAEZ,IAAK,qBAAsB,CACzB,MAAMvhG,EAAQuD,EACXm7C,UAAU,EAAGqiD,GACb/gG,MAAM,cACLA,IACF8gG,GAAY9gG,EAAM,GAAGL,QAEvB,KAPyB,CAS3B,IAAK,oBAAqB,CACxB,MAAMK,EAAQuD,EACXm7C,UAAUqiD,GACV/gG,MAAM,cACLA,IACFghG,GAAUhhG,EAAM,GAAGL,QAErB,KAPwB,CAS1B,IAAK,wBACCohG,IAAmBE,IACrBH,GAAY,GAEd,MACF,IAAK,uBACCC,IAAmBE,IACrBD,GAAU,GAMhB9vE,EAAMxzB,iBACN,QAAA4jG,EAAAhtF,KAAKmgF,YAAYr8C,gBAAjB,IAAAkpD,GAAAA,EAA2B9yD,SAAS,yBAA0B,CAC5D1rB,OAAQxO,KACRqiF,OAAQ,CACNpwE,KACAzrB,KAAM,YACNyI,QACAi+F,OAAQrmF,GAAQ,GAChB0lF,YAAY,EACZC,WACAE,WATJ,IAeJ1sF,KAAKypF,mBACHvuD,EACA+tD,EACA,CACE,CAAC,QAAS,SACV,CAAC,OAAQ,QACT,CAAC,YAAa,cACd,CAAC,aAAc,eACf,CAAC,aAAc,cACf,CAAC,UAAW,cAEdrsE,GAASA,EAAMqT,OAAOhhC,OAjNqB,CAyN/C,GAJI+8F,GACF9wD,EAAQlyC,iBAAiB,OAAQgjG,GAG/BhsF,KAAK6G,KAAKskF,KAAM,CAClB,MACMgC,GADantF,KAAK6G,KAAKtC,KAAK,GAAKvE,KAAK6G,KAAKtC,KAAK,IACvBwmF,EAE/B7vD,EAAQ/L,UAAUxW,IAAI,QACtBuiB,EAAQ5yC,MAAM8kG,cAAd,QAAAzhG,OAAsCwhG,EAAU,kCAL9B,CA9SA,MAsTpBjyD,EAAUlzC,SAASG,cAAc,OACjC+yC,EAAQ9yC,YAAc4X,KAAK6G,KAAK8jF,WAChCzvD,EAAQ5yC,MAAM+kG,cAAgB,SAC9BnyD,EAAQ5yC,MAAMk1F,QAAU,aAQ1B,OALAx9E,KAAKiqF,cAAc/uD,GACnBl7B,KAAKgqF,oBAAoB9uD,GACzBl7B,KAAKqjF,4BAA4BnoD,GAEjCl7B,KAAK2jC,UAAUxQ,OAAO+H,GACfl7B,KAAK2jC,SAxUL,EA4UX,MAAMm7C,UAAyCC,EAC7C9+E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,eAAgBp0D,EAAW/kB,KAAKspD,cAD9B,EAK1B,MAAMwuB,UAAwCI,EAC5C9+E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,aAAcp0D,EAAW00D,aADvB,CAIxBtqE,MAAAA,GACE,MAAMiyE,EAAUjoF,KAAKqR,kBACfxK,EAAO7G,KAAK6G,KACZoL,EAAKpL,EAAKoL,GAChB,IAAIhjB,EAAQg5F,EAAQh/D,SAAShX,EAAI,CAC/BhjB,MAAO4X,EAAKk+E,cAAgBl+E,EAAK8jF,aAChC17F,MACkB,kBAAVA,IAETA,EAAkB,QAAVA,EACRg5F,EAAQ3+D,SAASrX,EAAI,CAAEhjB,WAGzB+Q,KAAK2jC,UAAUxU,UAAUxW,IAAI,yBAA0B,YAEvD,MAAMuiB,EAAUlzC,SAASG,cAAc,SA+DvC,OA9DA81F,EAAqBtlE,IAAIuiB,GACzBA,EAAQrI,aAAa,kBAAmB5gB,GAExCipB,EAAQ2nD,SAAWh8E,EAAK+kF,SACxB5rF,KAAK+iF,aAAa7nD,EAASl7B,KAAK6G,KAAKi8E,UACrC5nD,EAAQx0C,KAAO,WACfw0C,EAAQ10C,KAAOqgB,EAAKkhF,UAChB94F,GACFisC,EAAQrI,aAAa,WAAW,GAElCqI,EAAQrI,aAAa,cAAehsB,EAAKk+E,aACzC7pD,EAAQpI,SAAWkrD,EAEnB9iD,EAAQlyC,iBAAiB,UAAU4zB,IACjC,MAAM,KAAEp2B,EAAF,QAAQ8mG,GAAY1wE,EAAMqT,OAChC,IAAK,MAAMs9D,KAAYvtF,KAAK0kF,mBAAmBl+F,EAAqByrB,GAAK,CACvE,MAAMu7E,EAAaF,GAAWC,EAASxI,cAAgBl+E,EAAKk+E,YACxDwI,EAASvI,aACXuI,EAASvI,WAAWsI,QAAUE,GAEhCvF,EAAQ3+D,SAASikE,EAASt7E,GAAI,CAAEhjB,MAAOu+F,GALgC,CAOzEvF,EAAQ3+D,SAASrX,EAAI,CAAEhjB,MAAOq+F,GAA9B,IAGFpyD,EAAQlyC,iBAAiB,aAAa4zB,IACpC,MAAMsM,EAAeriB,EAAKklF,mBAAqB,MAC/CnvE,EAAMqT,OAAOq9D,QAAUpkE,IAAiBriB,EAAKk+E,WAA7C,IAGE/kF,KAAKugF,iBAAmBvgF,KAAKwT,eAC/B0nB,EAAQlyC,iBAAiB,qBAAqBm6F,IAC5C,MAAMD,EAAU,CACdj0F,KAAAA,CAAM2tB,GACJA,EAAMqT,OAAOq9D,QAAiC,QAAvB1wE,EAAMylE,OAAOpzF,MACpCg5F,EAAQ3+D,SAASrX,EAAI,CAAEhjB,MAAO2tB,EAAMqT,OAAOq9D,SAFhC,GAKfttF,KAAKijF,0BAA0BC,EAASC,EAAxC,IAGFnjF,KAAKypF,mBACHvuD,EACA,KACA,CACE,CAAC,SAAU,YACX,CAAC,SAAU,UACX,CAAC,QAAS,SACV,CAAC,OAAQ,QACT,CAAC,YAAa,cACd,CAAC,aAAc,eACf,CAAC,aAAc,cACf,CAAC,UAAW,cAEdte,GAASA,EAAMqT,OAAOq9D,WAI1BttF,KAAKgqF,oBAAoB9uD,GACzBl7B,KAAKqjF,4BAA4BnoD,GAEjCl7B,KAAK2jC,UAAUxQ,OAAO+H,GACfl7B,KAAK2jC,SA9EL,EAkFX,MAAM86C,UAA2CM,EAC/C9+E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,aAAcp0D,EAAW00D,aADvB,CAIxBtqE,MAAAA,GACEhW,KAAK2jC,UAAUxU,UAAUxW,IAAI,yBAA0B,eACvD,MAAMsvE,EAAUjoF,KAAKqR,kBACfxK,EAAO7G,KAAK6G,KACZoL,EAAKpL,EAAKoL,GAChB,IAAIhjB,EAAQg5F,EAAQh/D,SAAShX,EAAI,CAC/BhjB,MAAO4X,EAAK8jF,aAAe9jF,EAAK4mF,cAC/Bx+F,MACkB,kBAAVA,IAETA,EAAQA,IAAU4X,EAAK4mF,YACvBxF,EAAQ3+D,SAASrX,EAAI,CAAEhjB,WAGzB,MAAMisC,EAAUlzC,SAASG,cAAc,SA6BvC,GA5BA81F,EAAqBtlE,IAAIuiB,GACzBA,EAAQrI,aAAa,kBAAmB5gB,GAExCipB,EAAQ2nD,SAAWh8E,EAAK+kF,SACxB5rF,KAAK+iF,aAAa7nD,EAASl7B,KAAK6G,KAAKi8E,UACrC5nD,EAAQx0C,KAAO,QACfw0C,EAAQ10C,KAAOqgB,EAAKkhF,UAChB94F,GACFisC,EAAQrI,aAAa,WAAW,GAElCqI,EAAQpI,SAAWkrD,EAEnB9iD,EAAQlyC,iBAAiB,UAAU4zB,IACjC,MAAM,KAAEp2B,EAAF,QAAQ8mG,GAAY1wE,EAAMqT,OAChC,IAAK,MAAMy9D,KAAS1tF,KAAK0kF,mBAAmBl+F,EAAqByrB,GAC/Dg2E,EAAQ3+D,SAASokE,EAAMz7E,GAAI,CAAEhjB,OAAO,IAEtCg5F,EAAQ3+D,SAASrX,EAAI,CAAEhjB,MAAOq+F,GAA9B,IAGFpyD,EAAQlyC,iBAAiB,aAAa4zB,IACpC,MAAMsM,EAAeriB,EAAKklF,kBAC1BnvE,EAAMqT,OAAOq9D,QACM,OAAjBpkE,QACiB59B,IAAjB49B,GACAA,IAAiBriB,EAAK4mF,WAHxB,IAMEztF,KAAKugF,iBAAmBvgF,KAAKwT,aAAc,CAC7C,MAAMm6E,EAAiB9mF,EAAK4mF,YAC5BvyD,EAAQlyC,iBAAiB,qBAAqBm6F,IAC5C,MAAMD,EAAU,CACdj0F,MAAO2tB,IACL,MAAM0wE,EAAUK,IAAmB/wE,EAAMylE,OAAOpzF,MAChD,IAAK,MAAMy+F,KAAS1tF,KAAK0kF,mBAAmB9nE,EAAMqT,OAAOzpC,MAAO,CAC9D,MAAMgnG,EAAaF,GAAWI,EAAMz7E,KAAOA,EACvCy7E,EAAM1I,aACR0I,EAAM1I,WAAWsI,QAAUE,GAE7BvF,EAAQ3+D,SAASokE,EAAMz7E,GAAI,CAAEhjB,MAAOu+F,GAL0B,IASpExtF,KAAKijF,0BAA0BC,EAASC,EAAxC,IAGFnjF,KAAKypF,mBACHvuD,EACA,KACA,CACE,CAAC,SAAU,YACX,CAAC,SAAU,UACX,CAAC,QAAS,SACV,CAAC,OAAQ,QACT,CAAC,YAAa,cACd,CAAC,aAAc,eACf,CAAC,aAAc,cACf,CAAC,UAAW,cAEdte,GAASA,EAAMqT,OAAOq9D,SA/BqB,CAuC/C,OAJAttF,KAAKgqF,oBAAoB9uD,GACzBl7B,KAAKqjF,4BAA4BnoD,GAEjCl7B,KAAK2jC,UAAUxQ,OAAO+H,GACfl7B,KAAK2jC,SAlFL,EAsFX,MAAMi7C,UAA0CR,EAC9Cn+E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEq0D,aAAcr0D,EAAW/kB,KAAK6jF,eAD5B,CAIxB10E,MAAAA,GAIE,MAAM2tB,EAAYhjC,MAAMqV,SACxB2tB,EAAUxU,UAAUxW,IAAI,yBAA0B,cAE9C3Y,KAAK6G,KAAK6hF,kBACZ/kD,EAAUg/C,MAAQ3iF,KAAK6G,KAAK6hF,iBAG9B,MAAMkF,EAAcjqD,EAAUkqD,UAS9B,OARI7tF,KAAKugF,iBAAmBvgF,KAAKwT,cAAgBo6E,IAC/C5tF,KAAKqjF,4BAA4BuK,GAEjCA,EAAY5kG,iBAAiB,qBAAqBm6F,IAChDnjF,KAAKijF,0BAA0B,CAAC,EAAGE,EAAnC,KAIGx/C,CApBA,EAwBX,MAAMk7C,UAAsCE,EAC1C9+E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,aAAcp0D,EAAW00D,aADvB,CAIxBtqE,MAAAA,GACEhW,KAAK2jC,UAAUxU,UAAUxW,IAAI,0BAC7B,MAAMsvE,EAAUjoF,KAAKqR,kBACfY,EAAKjS,KAAK6G,KAAKoL,GAEfqxE,EAAa2E,EAAQh/D,SAAShX,EAAI,CACtChjB,MAAO+Q,KAAK6G,KAAK8jF,aAGbmD,EAAgB9lG,SAASG,cAAc,UAC7C81F,EAAqBtlE,IAAIm1E,GACzBA,EAAcj7D,aAAa,kBAAmB5gB,GAE9C67E,EAAcjL,SAAW7iF,KAAK6G,KAAK+kF,SACnC5rF,KAAK+iF,aAAa+K,EAAe9tF,KAAK6G,KAAKi8E,UAC3CgL,EAActnG,KAAOwZ,KAAK6G,KAAKkhF,UAC/B+F,EAAch7D,SAAWkrD,EAEzB,IAAI+P,EAAkB/tF,KAAK6G,KAAKmnF,OAAShuF,KAAK6G,KAAKrf,QAAQ6D,OAAS,EAE/D2U,KAAK6G,KAAKmnF,QAEbF,EAAcj0E,KAAO7Z,KAAK6G,KAAKrf,QAAQ6D,OACnC2U,KAAK6G,KAAKonF,cACZH,EAAcI,UAAW,IAI7BJ,EAAc9kG,iBAAiB,aAAa4zB,IAC1C,MAAMsM,EAAelpB,KAAK6G,KAAKklF,kBAC/B,IAAK,MAAMoC,KAAUL,EAActmG,QACjC2mG,EAAOC,SAAWD,EAAOl/F,QAAUi6B,CADO,IAM9C,IAAK,MAAMilE,KAAUnuF,KAAK6G,KAAKrf,QAAS,CACtC,MAAM6mG,EAAgBrmG,SAASG,cAAc,UAC7CkmG,EAAcjmG,YAAc+lG,EAAOG,aACnCD,EAAcp/F,MAAQk/F,EAAOpJ,YACzBzB,EAAWr0F,MAAM8S,SAASosF,EAAOpJ,eACnCsJ,EAAcx7D,aAAa,YAAY,GACvCk7D,GAAkB,GAEpBD,EAAc36D,OAAOk7D,EARiB,CAWxC,IAAIE,EAAmB,KACvB,GAAIR,EAAiB,CACnB,MAAMS,EAAoBxmG,SAASG,cAAc,UACjDqmG,EAAkBv/F,MAAQ,IAC1Bu/F,EAAkB37D,aAAa,UAAU,GACzC27D,EAAkB37D,aAAa,YAAY,GAC3Ci7D,EAAc92D,QAAQw3D,GAEtBD,EAAmBA,KACjBC,EAAkBplE,SAClB0kE,EAAchxE,oBAAoB,QAASyxE,GAC3CA,EAAmB,IAAnB,EAEFT,EAAc9kG,iBAAiB,QAASulG,EAZrB,CAerB,MAAMtlE,EAAWwlE,IACf,MAAMjoG,EAAOioG,EAAW,QAAU,eAC5B,QAAEjnG,EAAF,SAAW0mG,GAAaJ,EAC9B,OAAKI,EAKE9nG,MAAM8Z,UAAUotC,OACpBjrC,KAAK7a,GAAS2mG,GAAUA,EAAOC,WAC/Bx/F,KAAIu/F,GAAUA,EAAO3nG,MANY,IAA3BgB,EAAQknG,cACX,KACAlnG,EAAQA,EAAQknG,eAAeloG,EAErC,EAKF,IAAImoG,EAAiB1lE,GAAwB,GAE7C,MAAM2lE,EAAWhyE,IACf,MAAMp1B,EAAUo1B,EAAMqT,OAAOzoC,QAC7B,OAAOpB,MAAM8Z,UAAUtR,IAAIyT,KAAK7a,GAAS2mG,IAChC,CAAEG,aAAcH,EAAO/lG,YAAa28F,YAAaoJ,EAAOl/F,SADjE,EA6JF,OAxJI+Q,KAAKugF,iBAAmBvgF,KAAKwT,cAC/Bs6E,EAAc9kG,iBAAiB,qBAAqBm6F,IAClD,MAAMD,EAAU,CACdj0F,KAAAA,CAAM2tB,GAAO,IAAAiyE,EACX,QAAAA,EAAAN,SAAA,IAAAM,GAAAA,IACA,MAAM5/F,EAAQ2tB,EAAMylE,OAAOpzF,MACrB6rB,EAAS,IAAIpC,IAAItyB,MAAMC,QAAQ4I,GAASA,EAAQ,CAACA,IACvD,IAAK,MAAMk/F,KAAUL,EAActmG,QACjC2mG,EAAOC,SAAWtzE,EAAOwD,IAAI6vE,EAAOl/F,OAEtCg5F,EAAQ3+D,SAASrX,EAAI,CACnBhjB,MAAOg6B,GAAwB,KAEjC0lE,EAAiB1lE,GAAwB,EAV9B,EAYb6lE,iBAAAA,CAAkBlyE,GAChBkxE,EAAcI,UAAW,CADF,EAGzB9kE,MAAAA,CAAOxM,GACL,MAAMp1B,EAAUsmG,EAActmG,QACxBunG,EAAQnyE,EAAMylE,OAAOj5D,OAC3B5hC,EAAQunG,GAAOX,UAAW,EAC1BN,EAAc1kE,OAAO2lE,GACjBvnG,EAAQ6D,OAAS,IAKR,IAJDjF,MAAM8Z,UAAU8uF,UAAU3sF,KAClC7a,GACA2mG,GAAUA,EAAOC,aAGjB5mG,EAAQ,GAAG4mG,UAAW,GAG1BnG,EAAQ3+D,SAASrX,EAAI,CACnBhjB,MAAOg6B,GAAwB,GAC/BnP,MAAO80E,EAAShyE,KAElB+xE,EAAiB1lE,GAAwB,EAlB7B,EAoBd/N,KAAAA,CAAM0B,GACJ,KAAgC,IAAzBkxE,EAAcziG,QACnByiG,EAAc1kE,OAAO,GAEvB6+D,EAAQ3+D,SAASrX,EAAI,CAAEhjB,MAAO,KAAM6qB,MAAO,KAC3C60E,EAAiB1lE,GAAwB,EAL9B,EAObyuB,MAAAA,CAAO96B,GACL,MAAM,MAAEmyE,EAAF,aAAST,EAAT,YAAuBvJ,GAAgBnoE,EAAMylE,OAAO3qC,OACpDu3C,EAAcnB,EAAc/3E,SAASg5E,GACrCV,EAAgBrmG,SAASG,cAAc,UAC7CkmG,EAAcjmG,YAAckmG,EAC5BD,EAAcp/F,MAAQ81F,EAElBkK,EACFA,EAAYC,OAAOb,GAEnBP,EAAc36D,OAAOk7D,GAEvBpG,EAAQ3+D,SAASrX,EAAI,CACnBhjB,MAAOg6B,GAAwB,GAC/BnP,MAAO80E,EAAShyE,KAElB+xE,EAAiB1lE,GAAwB,EAhB7B,EAkBdnP,KAAAA,CAAM8C,GACJ,MAAM,MAAE9C,GAAU8C,EAAMylE,OACxB,KAAgC,IAAzByL,EAAcziG,QACnByiG,EAAc1kE,OAAO,GAEvB,IAAK,MAAM4F,KAAQlV,EAAO,CACxB,MAAM,aAAEw0E,EAAF,YAAgBvJ,GAAgB/1D,EAChCq/D,EAAgBrmG,SAASG,cAAc,UAC7CkmG,EAAcjmG,YAAckmG,EAC5BD,EAAcp/F,MAAQ81F,EACtB+I,EAAc36D,OAAOk7D,EALG,CAOtBP,EAActmG,QAAQ6D,OAAS,IACjCyiG,EAActmG,QAAQ,GAAG4mG,UAAW,GAEtCnG,EAAQ3+D,SAASrX,EAAI,CACnBhjB,MAAOg6B,GAAwB,GAC/BnP,MAAO80E,EAAShyE,KAElB+xE,EAAiB1lE,GAAwB,EAnB9B,EAqBbkmE,OAAAA,CAAQvyE,GACN,MAAMuyE,EAAU,IAAIz2E,IAAIkE,EAAMylE,OAAO8M,SACrC,IAAK,MAAMhB,KAAUvxE,EAAMqT,OAAOzoC,QAChC2mG,EAAOC,SAAWe,EAAQ7wE,IAAI6vE,EAAOY,OAEvC9G,EAAQ3+D,SAASrX,EAAI,CACnBhjB,MAAOg6B,GAAwB,KAEjC0lE,EAAiB1lE,GAAwB,EAR5B,EAUfqvD,QAAAA,CAAS17D,GACPA,EAAMqT,OAAO4yD,UAAYjmE,EAAMylE,OAAO/J,QADxB,GAIlBt4E,KAAKijF,0BAA0BC,EAASC,EAAxC,IAGF2K,EAAc9kG,iBAAiB,SAAS4zB,IAAS,IAAAwyE,EAC/C,MAAMrK,EAAc97D,GAAwB,GAC5Cg/D,EAAQ3+D,SAASrX,EAAI,CAAEhjB,MAAO81F,IAE9BnoE,EAAMxzB,iBAEN,QAAAgmG,EAAApvF,KAAKmgF,YAAYr8C,gBAAjB,IAAAsrD,GAAAA,EAA2Bl1D,SAAS,yBAA0B,CAC5D1rB,OAAQxO,KACRqiF,OAAQ,CACNpwE,KACAzrB,KAAM,YACNyI,MAAO0/F,EACPU,SAAUtK,EACVwH,YAAY,EACZjB,UAAW,EACXgE,SAAS,IATb,IAcFtvF,KAAKypF,mBACHqE,EACA,KACA,CACE,CAAC,QAAS,SACV,CAAC,OAAQ,QACT,CAAC,YAAa,cACd,CAAC,aAAc,eACf,CAAC,aAAc,cACf,CAAC,UAAW,YACZ,CAAC,QAAS,UACV,CAAC,QAAS,cAEZlxE,GAASA,EAAMqT,OAAOhhC,SAGxB6+F,EAAc9kG,iBAAiB,SAAS,SAAU4zB,GAChDqrE,EAAQ3+D,SAASrX,EAAI,CAAEhjB,MAAOg6B,GAAwB,IADC,IAKvDjpB,KAAK6G,KAAKmnF,OACZhuF,KAAKiqF,cAAc6D,GAKrB9tF,KAAKgqF,oBAAoB8D,GACzB9tF,KAAKqjF,4BAA4ByK,GAEjC9tF,KAAK2jC,UAAUxQ,OAAO26D,GACf9tF,KAAK2jC,SA7OL,EAiPX,MAAMq7C,UAA+Bc,EACnC7/E,WAAAA,CAAY2rB,GACV,MAAM,KAAE/kB,EAAF,SAAQ49E,GAAa74D,EAC3BjrB,MAAMirB,EAAY,CAAEo0D,aAAcF,EAAkBc,cAAc/5E,KAClE7G,KAAKykF,SAAWA,CAHM,CAMxBzuE,MAAAA,GACEhW,KAAK2jC,UAAUxU,UAAUxW,IAAI,mBAE7B,MAAM2rE,EAAQ,IAAIiL,EAAa,CAC7B5rD,UAAW3jC,KAAK2jC,UAChBvD,MAAOpgC,KAAK6G,KAAKu5B,MACjB0gD,SAAU9gF,KAAK6G,KAAKi6E,SACpByD,iBAAkBvkF,KAAK6G,KAAK09E,iBAC5BxD,YAAa/gF,KAAK6G,KAAKk6E,YACvBC,SAAUhhF,KAAK6G,KAAKm6E,SACpBz8E,KAAMvE,KAAK6G,KAAKtC,KAChBigF,WAAYxkF,KAAK6G,KAAK29E,YAAc,KACpC95D,OAAQ1qB,KAAK0qB,OACb+5D,SAAUzkF,KAAKykF,SACfj0C,KAAMxwC,KAAK6G,KAAK2pC,OAGZg/C,EAAa,GACnB,IAAK,MAAMt0D,KAAWl7B,KAAKykF,SACzBvpD,EAAQopD,MAAQA,EAChBkL,EAAWp/F,KAAK8qC,EAAQr0B,KAAKoL,IAC7BipB,EAAQuqD,mBAQV,OALAzlF,KAAK2jC,UAAU9Q,aACb,gBACA28D,EAAW5gG,KAAIqjB,GAAA,GAAAtmB,OAASwb,EAAAD,kBAAHvb,OAAsBsmB,KAAMrlB,KAAK,MAGjDoT,KAAK2jC,SA7BL,EAP4C,IAAA8rD,EAAA,IAAAnpF,QAAAopF,EAAA,IAAAppF,QAAAqpF,EAAA,IAAArpF,QAAAspF,EAAA,IAAAtpF,QAAAupF,EAAA,IAAAvpF,QAAAwpF,EAAA,IAAAxpF,QAAAypF,EAAA,IAAAzpF,QAAA0pF,EAAA,IAAA1pF,QAAA2pF,EAAA,IAAA3pF,QAAA4pF,EAAA,IAAA5pF,QAAA6pF,EAAA,IAAA7pF,QAAA8pF,EAAA,IAAA9pF,QAAA+pF,EAAA,IAAA/pF,QAAAgqF,EAAA,IAAAhqF,QAAAiqF,EAAA,IAAAjqF,QAAAkqF,EAAA,IAAAlqF,QAAAmqF,EAAA,IAAAnqF,QAAAoqF,EAAA,IAAA78E,QAwCvD,MAAM07E,EAmCJtvF,WAAAA,CAAA0wF,GAYG,IAZS,UACVhtD,EADU,MAEVvD,EAFU,SAGVqkD,EAHU,SAIV3D,EAJU,iBAKVyD,EALU,YAMVxD,EANU,SAOVC,EAPU,OAQVt2D,EARU,KASVnmB,EATU,WAUVigF,EAVU,KAWVh0C,GAXFmgD,EAAA18E,4BAAA,KAAAy8E,GAAAlqF,2BAAA,KAAAipF,EAlCmB,MAAnBjpF,2BAAA,KAAAkpF,EAEgB74E,kBAAA65E,EAAA1wF,KAAA4wF,GAAc3sE,KAAKjkB,OAAnCwG,2BAAA,KAAAmpF,EAEa94E,kBAAA65E,EAAA1wF,KAAA6wF,GAAW5sE,KAAKjkB,OAA7BwG,2BAAA,KAAAopF,EAEa/4E,kBAAA65E,EAAA1wF,KAAA8wF,GAAW7sE,KAAKjkB,OAA7BwG,2BAAA,KAAAqpF,EAEeh5E,kBAAA65E,EAAA1wF,KAAA+wF,GAAa9sE,KAAKjkB,OAAjCwG,2BAAA,KAAAspF,EAES,MAATtpF,2BAAA,KAAAupF,EAEa,MAAbvpF,2BAAA,KAAAwpF,EAEe,MAAfxpF,2BAAA,KAAAypF,EAEY,MAAZzpF,2BAAA,KAAA0pF,EAEU,MAAV1pF,2BAAA,KAAA2pF,EAEc,MAAd3pF,2BAAA,KAAA4pF,GAEU,GAAV5pF,2BAAA,KAAA6pF,EAES,MAAT7pF,2BAAA,KAAA8pF,EAEQ,MAAR9pF,2BAAA,KAAA+pF,EAEY,MAAZ/pF,2BAAA,KAAAgqF,EAEY,MAAZhqF,2BAAA,KAAAiqF,GAEc,GAeZ3pF,sBAAAipF,EAAA/vF,KAAkB2jC,GAClB78B,sBAAA0pF,EAAAxwF,KAAiB8gF,GACjBh6E,sBAAAkpF,EAAAhwF,KAAoB+gF,GACpBj6E,sBAAAypF,EAAAvwF,KAAiBghF,GACjBl6E,sBAAAopF,EAAAlwF,KAAe0qB,GACf5jB,sBAAAgpF,EAAA9vF,KAAcogC,GACdt5B,sBAAAwpF,EAAAtwF,KAAauE,GACbuC,sBAAAqpF,EAAAnwF,KAAmBwkF,GACnB19E,sBAAAmpF,EAAAjwF,KAAiBykF,GAEjB,MAAMuM,EAAa1pF,EAAAsrC,cAAcC,aAAa0xC,GAC1CyM,GAIFlqF,sBAAA2oF,EAAAzvF,KAAwB0qB,EAAOwD,KAAKv/B,IAAI,yBAA0B,CAChEzC,KAAM8kG,EAAWC,qBACjBr6E,KAAMo6E,EAAWE,wBAIrBlxF,KAAKmxF,QAAU1M,EAAS2M,SAAQnoG,GAAKA,EAAEu8F,8BAEvC,IAAK,MAAMtqD,KAAWl7B,KAAKmxF,QACzBj2D,EAAQlyC,iBAAiB,QAAzBie,sBAAA4oF,EAAkC7vF,OAClCk7B,EAAQlyC,iBAAiB,aAAzBie,sBAAA2oF,EAAuC5vF,OACvCk7B,EAAQlyC,iBAAiB,aAAzBie,sBAAA0oF,EAAuC3vF,OACvCk7B,EAAQ/L,UAAUxW,IAAI,oBAIxB,IAAK,MAAMuiB,KAAWupD,EAAU,KAAA4M,EAC9B,QAAAA,EAAAn2D,EAAQyI,iBAAR,IAAA0tD,GAAAA,EAAmBroG,iBAAiB,UAApCie,sBAAAyoF,EAA+C1vF,MADjB,CAIhCiH,sBAAA8oF,EAAA/vF,MAAgBk2B,QAAS,EACrBsa,GACF35B,kBAAA65E,EAAA1wF,KAAA+wF,GAAA1uF,KAAArC,KAtCD,CAuDHgW,MAAAA,GACE,GAAA/O,sBAAAopF,EAAIrwF,MACF,OAGF,MACEohB,MAAM,KAAEtM,GACRuB,UACEmW,SAAS,UAAEC,EAAF,WAAaC,EAAb,MAAyBC,EAAzB,MAAgCC,KAHvC3lB,sBAAAipF,EAKFlwF,MACEskF,EAAAx9E,sBAAAupF,EAASrwF,KAAchY,SAASG,cAAc,QAGpD,GAFAm8F,EAAM1xD,UAAY,QAElB3rB,sBAAA6oF,EAAI9vF,MAAa,CACf,MAAMsxF,EAAahN,EAAMh8F,MAAMipG,aAAepqF,EAAA3E,KAAKC,gBACjDwE,sBAAA6oF,EAAG9vF,OAEL,GAEEmC,IAAIC,SAAS,mBAAoB,sCAEjCkiF,EAAMh8F,MAAMyuE,gBAAZ,sBAAAprE,OAAoD2lG,EAAU,oBACzD,CAKL,MAAME,EAAqB,GAC3BlN,EAAMh8F,MAAMyuE,gBAAkB5vD,EAAA3E,KAAKC,gBAC9BwE,sBAAA6oF,EAAA9vF,MAAYpR,KAAIoV,GACjB3W,KAAKC,MAAMkkG,GAAsB,IAAMxtF,GAAKA,KAR3C,CATQ,CAuBjB,MAAMytF,EAASzpG,SAASG,cAAc,QACtCspG,EAAO7+D,UAAY,SACnB,MAAM+vD,EAAQ36F,SAASG,cAAc,MAKrC,GAJAspG,EAAOt+D,OAAOwvD,KACXxN,IAAKwN,EAAMxN,IAAKjnF,IAAKy0F,EAAMv6F,aAA7B6e,sBAAAupF,EAA6CxwF,OAC9CskF,EAAMnxD,OAAOs+D,GAEbxqF,sBAAAwoF,EAAIzvF,MAAuB,CACzB,MAAMukF,EAAmBv8F,SAASG,cAAc,QAChDo8F,EAAiBp1D,UAAUxW,IAAI,aAC/B1R,sBAAAwoF,EAAAzvF,MAAsB+M,MAAK2kF,IACzBnN,EAAiBn8F,YAAcspG,CAA/B,IAEFD,EAAOt+D,OAAOoxD,EANW,CAS3B,MAAMxD,EAAA95E,sBAAA+oF,EAAchwF,MACdghF,EAAA/5E,sBAAAspF,EAAWvwF,MACjB,GACE,OAAAghF,QAAA,IAAAA,IAAAA,EAAU9yF,KACR,OAAA6yF,QAAA,IAAAA,GAAAA,EAAa7yF,KAAO6yF,EAAY7yF,MAAQ8yF,EAAS9yF,IAQ9C,CACL,MAAMyjG,EAAW3xF,KAAK4xF,gBAAgB7Q,GACtCuD,EAAMnxD,OAAOw+D,EAFR,MANL5T,EAAA8T,SAAS77E,OAAO,CACd87E,QAAS9Q,EAAS+Q,KAClBv8E,OAAQ,WACRwW,IAAKs4D,IAEPA,EAAMuJ,UAAU1+D,UAAUxW,IAAI,WAAY,gBAM5C,IAAIq5E,IAAiB/qF,sBAAAkpF,EAACnwF,MAClBuE,EAAO0C,sBAAA+qF,EAAA7B,EAAgBG,EAAAtwF,MAC3B,IAAK,MAAMk7B,KAAXj0B,sBAAAgpF,EAAsBjwF,MACpB,IAAKuE,GAAoD,OAA5C4C,EAAA3E,KAAKgC,UAAU02B,EAAQr0B,KAAKtC,KAAMA,GAAgB,CAC7DA,EAAO22B,EAAQr0B,KAAKtC,KACpBytF,GAAgB,EAChB,KAH6D,CAOjE,MAAMC,EAAiB9qF,EAAA3E,KAAK8B,cAAc,CACxCC,EAAK,GACLuQ,EAAK,GAAKvQ,EAAK,GAAKuQ,EAAK,GACzBvQ,EAAK,GACLuQ,EAAK,GAAKvQ,EAAK,GAAKuQ,EAAK,KAIrBoc,EAAc8gE,EAChBztF,EAAK,GAAKA,EAAK,GAFuB,EAGtC,EACE2tF,EAAYD,EAAe,GAAK/gE,EAChCihE,EAAWF,EAAe,IAE1B,MAAE3pG,GAAF2e,sBAAA8oF,EAAY/vF,MAClB1X,EAAMmpC,KAAN,GAAA9lC,OAAiB,KAAOumG,EAAYvlE,GAAUF,EAAU,KACxDnkC,EAAMG,IAAN,GAAAkD,OAAgB,KAAOwmG,EAAWvlE,GAAUF,EAAW,KAEvDzlB,sBAAA8oF,EAAA/vF,MAAgBmzB,OAAOmxD,EAlGhB,CA6GTsN,eAAAA,CAAAQ,GAA8B,IAAd,IAAElkG,EAAF,IAAOinF,GAAvBid,EACE,MAAMjvF,EAAInb,SAASG,cAAc,KACjCgb,EAAEgsB,UAAUxW,IAAI,gBAChBxV,EAAEgyE,IAAMA,EACR,MAAMkd,EAAQnkG,EAAI5H,MAAM,gBACxB,IAAK,IAAI8G,EAAI,EAAGa,EAAKokG,EAAMhnG,OAAQ+B,EAAIa,IAAMb,EAAG,CAC9C,MAAMswF,EAAO2U,EAAMjlG,GACnB+V,EAAEgwB,OAAOnrC,SAAS21F,eAAeD,IAC7BtwF,EAAIa,EAAK,GACXkV,EAAEgwB,OAAOnrC,SAASG,cAAc,MAJY,CAOhD,OAAOgb,CAZqB,CAsE9BoiF,SAAAA,GACEz+E,sBAAA2pF,EAAAzwF,KAAmBA,KAAKiyD,WACpBhrD,sBAAAwpF,EAACzwF,QAGLiH,sBAAA8oF,EAAA/vF,MAAgBk2B,QAAS,EALf,CAQZmvD,SAAAA,GACMp+E,sBAAAwpF,EAACzwF,QAGL8G,sBAAA2pF,EAAAzwF,MAAmB,GACnBiH,sBAAA8oF,EAAA/vF,MAAgBk2B,QAAS,EALf,CAQZ,aAAI+7B,GACF,OAAkC,IAA3BhrD,sBAAA8oF,EAAA/vF,MAAgBk2B,MADT,EAzSC,SAAA06D,EAkORh0E,GACHA,EAAMmjB,QAAUnjB,EAAMie,UAAYje,EAAMkX,SAAWlX,EAAMke,UAI3C,UAAdle,EAAM5tB,KAAkC,WAAd4tB,EAAM5tB,KAANiY,sBAAAmpF,EAA0BpwF,QACtD6W,kBAAA65E,EAAA1wF,KAAA+wF,GAAA1uF,KAAArC,KANY,UAAA+wF,IAcdjqF,sBAAAspF,EAAApwF,MAAeiH,sBAAAmpF,EAACpwF,OAChBiH,sBAAAmpF,EAAIpwF,OACF6W,kBAAA65E,EAAA1wF,KAAA8wF,GAAAzuF,KAAArC,MACAiH,sBAAA8oF,EAAA/vF,MAAgBhX,iBAAiB,QAAjCie,sBAAA4oF,EAA0C7vF,OAC1CiH,sBAAA8oF,EAAA/vF,MAAgBhX,iBAAiB,UAAjCie,sBAAAyoF,EAA4C1vF,SAE5C6W,kBAAA65E,EAAA1wF,KAAA6wF,GAAAxuF,KAAArC,MACAiH,sBAAA8oF,EAAA/vF,MAAgB8c,oBAAoB,QAApC7V,sBAAA4oF,EAA6C7vF,OAC7CiH,sBAAA8oF,EAAA/vF,MAAgB8c,oBAAoB,UAApC7V,sBAAAyoF,EAA+C1vF,OATzC,UAAA8wF,IAiBJ7pF,sBAAAopF,EAACrwF,OACHA,KAAKgW,SAEFhW,KAAKiyD,UAIHhrD,sBAAAmpF,EAAIpwF,OACTiH,sBAAA8oF,EAAA/vF,MAAgBmvB,UAAUxW,IAAI,YAJ9B1R,sBAAA8oF,EAAA/vF,MAAgBk2B,QAAS,EACzBjvB,sBAAA8oF,EAAA/vF,MAAgB1X,MAAMqnC,OACpBkb,SAAS5jC,sBAAA8oF,EAAA/vF,MAAgB1X,MAAMqnC,QAAU,IAPvC,UAAAkhE,IAiBN5pF,sBAAA8oF,EAAA/vF,MAAgBmvB,UAAU/F,OAAO,YAC7BniB,sBAAAmpF,EAAApwF,OAAiBA,KAAKiyD,YAG1BhrD,sBAAA8oF,EAAA/vF,MAAgBk2B,QAAS,EACzBjvB,sBAAA8oF,EAAA/vF,MAAgB1X,MAAMqnC,OACpBkb,SAAS5jC,sBAAA8oF,EAAA/vF,MAAgB1X,MAAMqnC,QAAU,IAPrC,CA+BV,MAAMgtD,UAAkCmD,EACtC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,cAAc,EAAMC,cAAc,IACtDjgF,KAAK5X,YAAcwjC,EAAW/kB,KAAKze,YACnC4X,KAAK88E,aAAelxD,EAAW/kB,KAAKi2E,aACpC98E,KAAK05E,qBAAuBvyE,EAAAlV,qBAAqBE,QAJ3B,CAOxB6jB,MAAAA,GAGE,GAFAhW,KAAK2jC,UAAUxU,UAAUxW,IAAI,sBAEzB3Y,KAAK5X,YAAa,CACpB,MAAMk/F,EAAUt/F,SAASG,cAAc,OACvCm/F,EAAQn4D,UAAUxW,IAAI,yBACtB2uE,EAAQz0D,aAAa,OAAQ,WAC7B,IAAK,MAAM6qD,KAAQ19E,KAAK5X,YAAa,CACnC,MAAMkqG,EAAWtqG,SAASG,cAAc,QACxCmqG,EAASlqG,YAAcs1F,EACvB4J,EAAQn0D,OAAOm/D,EAHoB,CAKrCtyF,KAAK2jC,UAAUxQ,OAAOm0D,EATF,CAkBtB,OANKtnF,KAAK6G,KAAKq6E,UAAYlhF,KAAKihF,cAC9BjhF,KAAKqkF,eAGPrkF,KAAK2lF,qBAEE3lF,KAAK2jC,SArBL,EA/wEX39C,EAAA22F,0BAAAA,EAAA,IAAA4V,EAAA,IAAAjsF,QAwyEA,MAAM24E,UAA8Ba,EAGlC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,cAAc,EAAMC,cAAc,IAAtDz5E,2BAAA,KAAA+rF,EAHM,KAEgB,CAIxBv8E,MAAAA,GACEhW,KAAK2jC,UAAUxU,UAAUxW,IAAI,kBAK7B,MAAM9R,EAAO7G,KAAK6G,MACZ,MAAE0d,EAAF,OAASC,GAAW05D,EAAYr3E,EAAKtC,MACrCgrC,EAAMvvC,KAAKutE,WAAWx+E,OAC1Bw1B,EACAC,GACuB,GAKnBk5D,EAAA52E,sBAAAyrF,EAAQvyF,KAAaA,KAAKutE,WAAWplF,cAAc,aAoBzD,OAnBAu1F,EAAK7qD,aAAa,KAAMhsB,EAAKtC,KAAK,GAAKsC,EAAK2rF,gBAAgB,IAC5D9U,EAAK7qD,aAAa,KAAMhsB,EAAKtC,KAAK,GAAKsC,EAAK2rF,gBAAgB,IAC5D9U,EAAK7qD,aAAa,KAAMhsB,EAAKtC,KAAK,GAAKsC,EAAK2rF,gBAAgB,IAC5D9U,EAAK7qD,aAAa,KAAMhsB,EAAKtC,KAAK,GAAKsC,EAAK2rF,gBAAgB,IAG5D9U,EAAK7qD,aAAa,eAAgBhsB,EAAKw6E,YAAY98D,OAAS,GAC5Dm5D,EAAK7qD,aAAa,SAAU,eAC5B6qD,EAAK7qD,aAAa,OAAQ,eAE1B0c,EAAIpc,OAAOuqD,GACX19E,KAAK2jC,UAAUxQ,OAAOoc,IAIjB1oC,EAAKq6E,UAAYlhF,KAAKihF,cACzBjhF,KAAKqkF,eAGArkF,KAAK2jC,SApCL,CAuCT6hD,yBAAAA,GACE,OAAAv+E,sBAAAsrF,EAAOvyF,KADmB,CAI5BylF,gBAAAA,GACEzlF,KAAK2jC,UAAUxU,UAAUxW,IAAI,gBADZ,EAlDiC,IAAA85E,GAAA,IAAAnsF,QAuDtD,MAAM44E,WAAgCY,EAGpC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,cAAc,EAAMC,cAAc,IAAtDz5E,2BAAA,KAAAisF,GAHQ,KAEc,CAIxBz8E,MAAAA,GACEhW,KAAK2jC,UAAUxU,UAAUxW,IAAI,oBAK7B,MAAM9R,EAAO7G,KAAK6G,MACZ,MAAE0d,EAAF,OAASC,GAAW05D,EAAYr3E,EAAKtC,MACrCgrC,EAAMvvC,KAAKutE,WAAWx+E,OAC1Bw1B,EACAC,GACuB,GAMnB88D,EAAcz6E,EAAKw6E,YAAY98D,MAC/BmuE,EAAA5rF,sBAAA2rF,GAAUzyF,KAAeA,KAAKutE,WAAWplF,cAAc,aAoB7D,OAnBAuqG,EAAO7/D,aAAa,IAAKyuD,EAAc,GACvCoR,EAAO7/D,aAAa,IAAKyuD,EAAc,GACvCoR,EAAO7/D,aAAa,QAAStO,EAAQ+8D,GACrCoR,EAAO7/D,aAAa,SAAUrO,EAAS88D,GAGvCoR,EAAO7/D,aAAa,eAAgByuD,GAAe,GACnDoR,EAAO7/D,aAAa,SAAU,eAC9B6/D,EAAO7/D,aAAa,OAAQ,eAE5B0c,EAAIpc,OAAOu/D,GACX1yF,KAAK2jC,UAAUxQ,OAAOoc,IAIjB1oC,EAAKq6E,UAAYlhF,KAAKihF,cACzBjhF,KAAKqkF,eAGArkF,KAAK2jC,SAtCL,CAyCT6hD,yBAAAA,GACE,OAAAv+E,sBAAAwrF,GAAOzyF,KADmB,CAI5BylF,gBAAAA,GACEzlF,KAAK2jC,UAAUxU,UAAUxW,IAAI,gBADZ,EApDmC,IAAAg6E,GAAA,IAAArsF,QAyDxD,MAAM64E,WAAgCW,EAGpC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,cAAc,EAAMC,cAAc,IAAtDz5E,2BAAA,KAAAmsF,GAHQ,KAEc,CAIxB38E,MAAAA,GACEhW,KAAK2jC,UAAUxU,UAAUxW,IAAI,oBAK7B,MAAM9R,EAAO7G,KAAK6G,MACZ,MAAE0d,EAAF,OAASC,GAAW05D,EAAYr3E,EAAKtC,MACrCgrC,EAAMvvC,KAAKutE,WAAWx+E,OAC1Bw1B,EACAC,GACuB,GAMnB88D,EAAcz6E,EAAKw6E,YAAY98D,MAC/BquE,EAAA9rF,sBAAA6rF,GAAU3yF,KACdA,KAAKutE,WAAWplF,cAAc,gBAoBhC,OAnBAyqG,EAAO//D,aAAa,KAAMtO,EAAQ,GAClCquE,EAAO//D,aAAa,KAAMrO,EAAS,GACnCouE,EAAO//D,aAAa,KAAMtO,EAAQ,EAAI+8D,EAAc,GACpDsR,EAAO//D,aAAa,KAAMrO,EAAS,EAAI88D,EAAc,GAGrDsR,EAAO//D,aAAa,eAAgByuD,GAAe,GACnDsR,EAAO//D,aAAa,SAAU,eAC9B+/D,EAAO//D,aAAa,OAAQ,eAE5B0c,EAAIpc,OAAOy/D,GACX5yF,KAAK2jC,UAAUxQ,OAAOoc,IAIjB1oC,EAAKq6E,UAAYlhF,KAAKihF,cACzBjhF,KAAKqkF,eAGArkF,KAAK2jC,SAvCL,CA0CT6hD,yBAAAA,GACE,OAAAv+E,sBAAA0rF,GAAO3yF,KADmB,CAI5BylF,gBAAAA,GACEzlF,KAAK2jC,UAAUxU,UAAUxW,IAAI,gBADZ,EArDmC,IAAAk6E,GAAA,IAAAvsF,QA0DxD,MAAM84E,WAAkCU,EAGtC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,cAAc,EAAMC,cAAc,IAAtDz5E,2BAAA,KAAAqsF,GAHU,MAKV7yF,KAAK8yF,mBAAqB,qBAC1B9yF,KAAK+yF,eAAiB,cAJA,CAOxB/8E,MAAAA,GACEhW,KAAK2jC,UAAUxU,UAAUxW,IAAI3Y,KAAK8yF,oBAKlC,MAAMjsF,EAAO7G,KAAK6G,MACZ,MAAE0d,EAAF,OAASC,GAAW05D,EAAYr3E,EAAKtC,MACrCgrC,EAAMvvC,KAAKutE,WAAWx+E,OAC1Bw1B,EACAC,GACuB,GAOzB,IAAIosC,EAAS,GACb,IAAK,MAAMoiC,KAAcnsF,EAAKosF,SAAU,CACtC,MAAM/lE,EAAI8lE,EAAW9lE,EAAIrmB,EAAKtC,KAAK,GAC7B4oB,EAAItmB,EAAKtC,KAAK,GAAKyuF,EAAW7lE,EACpCyjC,EAAOxgE,KAAK88B,EAAI,IAAMC,EAHgB,CAKxCyjC,EAASA,EAAOhkE,KAAK,KAErB,MAAMsmG,EAAApsF,sBAAA+rF,GAAY7yF,KAAiBA,KAAKutE,WAAWplF,cACjD6X,KAAK+yF,iBAkBP,OAhBAG,EAASrgE,aAAa,SAAU+9B,GAGhCsiC,EAASrgE,aAAa,eAAgBhsB,EAAKw6E,YAAY98D,OAAS,GAChE2uE,EAASrgE,aAAa,SAAU,eAChCqgE,EAASrgE,aAAa,OAAQ,eAE9B0c,EAAIpc,OAAO+/D,GACXlzF,KAAK2jC,UAAUxQ,OAAOoc,IAIjB1oC,EAAKq6E,UAAYlhF,KAAKihF,cACzBjhF,KAAKqkF,eAGArkF,KAAK2jC,SA7CL,CAgDT6hD,yBAAAA,GACE,OAAAv+E,sBAAA4rF,GAAO7yF,KADmB,CAI5BylF,gBAAAA,GACEzlF,KAAK2jC,UAAUxU,UAAUxW,IAAI,gBADZ,EAKrB,MAAM4mE,WAAiCH,GACrCn/E,WAAAA,CAAY2rB,GAEVjrB,MAAMirB,GAEN5rB,KAAK8yF,mBAAqB,oBAC1B9yF,KAAK+yF,eAAiB,aALA,EAS1B,MAAM1T,WAA+BS,EACnC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,cAAc,EAAMC,cAAc,GADhC,CAIxBjqE,MAAAA,GAME,OALAhW,KAAK2jC,UAAUxU,UAAUxW,IAAI,oBAExB3Y,KAAK6G,KAAKq6E,UAAYlhF,KAAKihF,cAC9BjhF,KAAKqkF,eAEArkF,KAAK2jC,SANL,EAL4C,IAAAwvD,GAAA,IAAA7sF,QAevD,MAAMg5E,WAA6BQ,EAGjC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,cAAc,EAAMC,cAAc,IAAtDz5E,2BAAA,KAAA2sF,GAHW,IAKXnzF,KAAK8yF,mBAAqB,gBAI1B9yF,KAAK+yF,eAAiB,eACtB/yF,KAAK05E,qBAAuBvyE,EAAAlV,qBAAqBI,GAR3B,CAWxB2jB,MAAAA,GACEhW,KAAK2jC,UAAUxU,UAAUxW,IAAI3Y,KAAK8yF,oBAIlC,MAAMjsF,EAAO7G,KAAK6G,MACZ,MAAE0d,EAAF,OAASC,GAAW05D,EAAYr3E,EAAKtC,MACrCgrC,EAAMvvC,KAAKutE,WAAWx+E,OAC1Bw1B,EACAC,GACuB,GAGzB,IAAK,MAAM4uE,KAAWvsF,EAAKwsF,SAAU,CAKnC,IAAIziC,EAAS,GACb,IAAK,MAAMoiC,KAAcI,EAAS,CAChC,MAAMlmE,EAAI8lE,EAAW9lE,EAAIrmB,EAAKtC,KAAK,GAC7B4oB,EAAItmB,EAAKtC,KAAK,GAAKyuF,EAAW7lE,EACpCyjC,EAAOxgE,KAAP,GAAAzE,OAAeuhC,EAAE,KAAAvhC,OAAGwhC,GAHY,CAKlCyjC,EAASA,EAAOhkE,KAAK,KAErB,MAAMsmG,EAAWlzF,KAAKutE,WAAWplF,cAAc6X,KAAK+yF,gBACpD9rF,sBAAAksF,GAAAnzF,MAAgB5P,KAAK8iG,GACrBA,EAASrgE,aAAa,SAAU+9B,GAGhCsiC,EAASrgE,aAAa,eAAgBhsB,EAAKw6E,YAAY98D,OAAS,GAChE2uE,EAASrgE,aAAa,SAAU,eAChCqgE,EAASrgE,aAAa,OAAQ,gBAIzBhsB,EAAKq6E,UAAYlhF,KAAKihF,cACzBjhF,KAAKqkF,eAGP90C,EAAIpc,OAAO+/D,EA5BwB,CAgCrC,OADAlzF,KAAK2jC,UAAUxQ,OAAOoc,GACfvvC,KAAK2jC,SA7CL,CAgDT6hD,yBAAAA,GACE,OAAAv+E,sBAAAksF,GAAOnzF,KADmB,CAI5BylF,gBAAAA,GACEzlF,KAAK2jC,UAAUxU,UAAUxW,IAAI,gBADZ,EAhnFrB3yB,EAAAs5F,qBAAAA,GAqnFA,MAAME,WAAmCM,EACvC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAChBo0D,cAAc,EACdC,cAAc,EACdC,sBAAsB,GAJF,CAQxBlqE,MAAAA,GAME,OALKhW,KAAK6G,KAAKq6E,UAAYlhF,KAAKihF,cAC9BjhF,KAAKqkF,eAGPrkF,KAAK2jC,UAAUxU,UAAUxW,IAAI,uBACtB3Y,KAAK2jC,SANL,EAUX,MAAM87C,WAAmCK,EACvC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAChBo0D,cAAc,EACdC,cAAc,EACdC,sBAAsB,GAJF,CAQxBlqE,MAAAA,GAME,OALKhW,KAAK6G,KAAKq6E,UAAYlhF,KAAKihF,cAC9BjhF,KAAKqkF,eAGPrkF,KAAK2jC,UAAUxU,UAAUxW,IAAI,uBACtB3Y,KAAK2jC,SANL,EAUX,MAAM+7C,WAAkCI,EACtC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAChBo0D,cAAc,EACdC,cAAc,EACdC,sBAAsB,GAJF,CAQxBlqE,MAAAA,GAME,OALKhW,KAAK6G,KAAKq6E,UAAYlhF,KAAKihF,cAC9BjhF,KAAKqkF,eAGPrkF,KAAK2jC,UAAUxU,UAAUxW,IAAI,sBACtB3Y,KAAK2jC,SANL,EAUX,MAAMg8C,WAAmCG,EACvC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAChBo0D,cAAc,EACdC,cAAc,EACdC,sBAAsB,GAJF,CAQxBlqE,MAAAA,GAME,OALKhW,KAAK6G,KAAKq6E,UAAYlhF,KAAKihF,cAC9BjhF,KAAKqkF,eAGPrkF,KAAK2jC,UAAUxU,UAAUxW,IAAI,uBACtB3Y,KAAK2jC,SANL,EAUX,MAAMi8C,WAA+BE,EACnC7/E,WAAAA,CAAY2rB,GACVjrB,MAAMirB,EAAY,CAAEo0D,cAAc,EAAMC,cAAc,GADhC,CAIxBjqE,MAAAA,GAME,OALAhW,KAAK2jC,UAAUxU,UAAUxW,IAAI,oBAExB3Y,KAAK6G,KAAKq6E,UAAYlhF,KAAKihF,cAC9BjhF,KAAKqkF,eAEArkF,KAAK2jC,SANL,EAtsFX39C,EAAA45F,uBAAAA,GAAA,IAAA0T,GAAA,IAAAhtF,QAAAitF,GAAA,IAAA1/E,QAgtFA,MAAMgsE,WAAwCC,EAG5C7/E,WAAAA,CAAY2rB,GAAY,IAAA4nE,EACtB7yF,MAAMirB,EAAY,CAAEo0D,cAAc,IAAlC/rE,4BAAA,KAAAs/E,IAAA/sF,2BAAA,KAAA8sF,GAHS,MAKT,MAAM,SAAExuE,EAAF,QAAYwiE,GAAYtnF,KAAK6G,KAAK5gB,KACxC+Z,KAAK8kB,UAAW,EAAAxd,EAAAmsF,oBAAmB3uE,GAAgC,GACnE9kB,KAAKsnF,QAAUA,EAEf,QAAAkM,EAAAxzF,KAAKmgF,YAAYr8C,gBAAjB,IAAA0vD,GAAAA,EAA2Bt5D,SAAS,2BAA4B,CAC9D1rB,OAAQxO,KACR8kB,WACAwiE,WAVoB,CAcxBtxE,MAAAA,GACEhW,KAAK2jC,UAAUxU,UAAUxW,IAAI,4BAE7B,MAAM,UAAEgrB,EAAF,KAAa98B,GAAS7G,KAC5B,IAAImxF,EACAtqF,EAAK6jF,eAAoC,IAAnB7jF,EAAKw1C,UAC7B80C,EAAUnpG,SAASG,cAAc,QAOjCgpG,EAAUnpG,SAASG,cAAc,OACjCgpG,EAAQ/nF,IAAR,GAAAzd,OAAiBqU,KAAKqgF,mBAAmB,eAAA10F,OACvC,aAAatB,KAAKwc,EAAKrgB,MAAQ,YAAc,UAC9C,QAEGqgB,EAAKw1C,WAAax1C,EAAKw1C,UAAY,IACrC80C,EAAQ7oG,MAAR,mBAAAqD,OAAmC0B,KAAK6kC,MACrB,IAAjBrrB,EAAKw1C,WACL,SAON80C,EAAQnoG,iBAAiB,WAAY6tB,kBAAA08E,GAAAvzF,KAAA0zF,IAAezvE,KAAKjkB,OACzD8G,sBAAAwsF,GAAAtzF,KAAgBmxF,GAEhB,MAAM,MAAErvF,GAAUqF,EAAA/F,YAAYQ,SAc9B,OAbA+hC,EAAU36C,iBAAiB,WAAW64B,IACpB,UAAZA,EAAI7yB,MAAoB8S,EAAQ+f,EAAIiZ,QAAUjZ,EAAIiS,UACpDjd,kBAAA08E,GAAAvzF,KAAA0zF,IAAArxF,KAAArC,KAD8D,KAK7D6G,EAAKq6E,UAAYlhF,KAAKihF,aACzBjhF,KAAKqkF,eAEL8M,EAAQhiE,UAAUxW,IAAI,oBAGxBgrB,EAAUxQ,OAAOg+D,GACVxtD,CA7CA,CAgDT6hD,yBAAAA,GACE,OAAAv+E,sBAAAqsF,GAAOtzF,KADmB,CAI5BylF,gBAAAA,GACEzlF,KAAK2jC,UAAUxU,UAAUxW,IAAI,gBADZ,EArE2C,SAAA+6E,KA4ElD,IAAAC,EACV,QAAAA,EAAA3zF,KAAKogF,uBAAL,IAAAuT,GAAAA,EAAsBtM,mBACpBrnF,KAAK2jC,UACL3jC,KAAKsnF,QACLtnF,KAAK8kB,SAJG,KAAA8uE,GAAA,IAAAttF,QAAAutF,GAAA,IAAAvtF,QAAAwtF,GAAA,IAAAxtF,QAAAytF,GAAA,IAAAlgF,QAgCQ,SAAAmgF,GA0CL94D,EAASjpB,GAAI,IAAAgiF,EAC1B,MAAMC,EAAiBh5D,EAAQi5D,YAAcj5D,EAC7Cg5D,EAAejiF,GAAf,GAAAtmB,OAAuBwb,EAAAD,kBAAHvb,OAAsBsmB,GAE1CjS,KAAKgsB,IAAImH,OAAO+H,GAChB,QAAA+4D,EAAAhtF,sBAAA2sF,GAAA5zF,aAAA,IAAAi0F,GAAAA,EAA4B9a,iBAC1Bn5E,KAAKgsB,IACLkP,EACAg5D,GACoB,EATI,UAAAE,KA2G1B,IAAIntF,sBAAA4sF,GAAC7zF,MACH,OAEF,MAAM+kC,EAAQ/kC,KAAKgsB,IACnB,IAAK,MAAO/Z,EAAIoU,KAAhBpf,sBAAA4sF,GAA2B7zF,MAA2B,CACpD,MAAMk7B,EAAU6J,EAAMkgD,cAAN,wBAAAt5F,OAA4CsmB,EAAG,OAC/D,IAAKipB,EACH,SAGF,MAAM,WAAEi5D,GAAej5D,EAClBi5D,EAE8B,WAAxBA,EAAWrL,SACpBqL,EAAWE,YAAYhuE,GAEvB8tE,EAAWjF,OAAO7oE,GAJlB6U,EAAQ/H,OAAO9M,EARmC,CAetDpf,sBAAA4sF,GAAA7zF,MAA0Bkb,OApBF,CAh9F5Bl1B,EAAAsuG,gBA4zFA,MAOEr0F,WAAAA,CAAAs0F,GAOG,IAPS,IACVvoE,EADU,qBAEVsrD,EAFU,oBAGV7gE,EAHU,KAIVyX,EAJU,KAKV9M,EALU,SAMV/K,GANFk+E,EAAAtgF,4BAAA,KAAA8/E,IAAAvtF,2BAAA,KAAAotF,GANwB,MAAxBptF,2BAAA,KAAAqtF,GAEuB,MAAvBrtF,2BAAA,KAAAstF,GAEuB,IAAIzlG,KAUzB2R,KAAKgsB,IAAMA,EACXllB,sBAAA8sF,GAAA5zF,KAA6Bs3E,GAC7BxwE,sBAAA+sF,GAAA7zF,KAA4ByW,GAC5BzW,KAAKkuB,KAAOA,EACZluB,KAAKohB,KAAOA,EACZphB,KAAKqW,SAAWA,EAChBrW,KAAK2vB,OAAS,EAMZ3vB,KAAKkuB,OAALluB,KAAKkuB,KAAS4vD,EAAA0W,SAbf,CA+CH,YAAMx+E,CAAO3I,GACX,MAAM,YAAEonF,GAAgBpnF,EAClB03B,EAAQ/kC,KAAKgsB,KACnB,EAAA1kB,EAAAyrE,oBAAmBhuC,EAAO/kC,KAAKqW,UAE/B,MAAMq+E,EAAkB,IAAIrmG,IACtBsmG,EAAgB,CACpB9tF,KAAM,KACNk+B,QACAo7C,YAAa9yE,EAAO8yE,YACpBC,gBAAiB/yE,EAAO+yE,gBACxBC,mBAAoBhzE,EAAOgzE,oBAAsB,GACjDC,aAAoC,IAAvBjzE,EAAOizE,YACpB/S,WAAY,IAAIjmE,EAAA6pC,cAChB9/B,kBAAmBhE,EAAOgE,mBAAqB,IAAIhK,EAAAwZ,kBACnD0/D,iBAA4C,IAA3BlzE,EAAOkzE,gBACxB/sE,aAAcnG,EAAOmG,aACrBitE,aAAcpzE,EAAOozE,aACrB/1D,OAAQ1qB,KACRykF,SAAU,MAGZ,IAAK,MAAM59E,KAAQ4tF,EAAa,CAC9B,GAAI5tF,EAAK+tF,OACP,SAEF,MAAMC,EAAoBhuF,EAAK4yE,iBAAmBtyE,EAAA7S,eAAea,MACjE,GAAK0/F,EAKE,CACL,MAAMpQ,EAAWiQ,EAAgB/lG,IAAIkY,EAAKoL,IAC1C,IAAKwyE,EAEH,SAEFkQ,EAAclQ,SAAWA,CANpB,KALiB,CACtB,MAAM,MAAElgE,EAAF,OAASC,GAAW05D,EAAYr3E,EAAKtC,MAC3C,GAAIggB,GAAS,GAAKC,GAAU,EAC1B,QAHoB,CAaxBmwE,EAAc9tF,KAAOA,EACrB,MAAMq0B,EAAUijD,EAAyBpvF,OAAO4lG,GAEhD,IAAKz5D,EAAQ8kD,aACX,SAGF,IAAK6U,GAAqBhuF,EAAKq6E,SAAU,CACvC,MAAMuD,EAAWiQ,EAAgB/lG,IAAIkY,EAAKq6E,UACrCuD,EAGHA,EAASr0F,KAAK8qC,GAFdw5D,EAAgBz9E,IAAIpQ,EAAKq6E,SAAU,CAAChmD,GAHC,CASrCA,EAAQw+C,qBAAuB,GACjCzyE,sBAAA6sF,GAAA9zF,MAA0BiX,IAAIikB,EAAQr0B,KAAKoL,GAAIipB,GAGjD,MAAM45D,EAAW55D,EAAQllB,SACrBnP,EAAKqvB,SACP4+D,EAASxsG,MAAMyhD,WAAa,UAE9BlzB,kBAAAk9E,GAAA/zF,KAAAg0F,IAAA3xF,KAAArC,KAAoB80F,EAAUjuF,EAAKoL,GA1CL,CA6ChC4E,kBAAAk9E,GAAA/zF,KAAAo0F,IAAA/xF,KAAArC,YAEMA,KAAKkuB,KAAK0C,UAAUmU,EArEP,CA8ErB1a,MAAAA,CAAA0qE,GAAqB,IAAd,SAAE1+E,GAAT0+E,EACE,MAAMhwD,EAAQ/kC,KAAKgsB,IACnBhsB,KAAKqW,SAAWA,GAChB,EAAA/O,EAAAyrE,oBAAmBhuC,EAAO,CAAE9vB,SAAUoB,EAASpB,WAE/C4B,kBAAAk9E,GAAA/zF,KAAAo0F,IAAA/xF,KAAArC,MACA+kC,EAAM7O,QAAS,CANI,CAgCrBmiD,sBAAAA,GACE,OAAOjyF,MAAMkmF,KAAKrlE,sBAAA6sF,GAAA9zF,MAA0B8a,SADrB,CAIzB49D,qBAAAA,CAAsBzmE,GACpB,OAAOhL,sBAAA6sF,GAAA9zF,MAA0BrR,IAAIsjB,EADb,YCr9F5B,SAAS+iF,EAAczyF,GACrB,OAAOlV,KAAKC,MAAoC,IAA9BD,KAAKsW,IAAI,EAAGtW,KAAKkT,IAAI,EAAGgC,KACvClW,SAAS,IACTE,SAAS,EAAG,IAHS,CAM1B,SAAS0oG,EAAc/nE,GACrB,OAAO7/B,KAAKsW,IAAI,EAAGtW,KAAKkT,IAAI,IAAK,IAAM2sB,GADf,2EA5B1BlnC,EAAAu8F,gBAiCA,MACE,aAAO2S,CAAPC,GAA4B,IAAbnxF,EAAGmpB,EAAG/pB,EAAG+rC,GAAxBgmD,EACE,MAAO,CAAC,IAAK,EAAI9nG,KAAKkT,IAAI,EAAG,GAAMyD,EAAI,IAAOZ,EAAI,IAAO+pB,EAAIgiB,GADnC,CAI5B,aAAOimD,CAAPC,GAAmB,IAAJ1yF,GAAf0yF,EACE,MAAO,CAAC,OAAQ,EAAG,EAAG,EAAG,EAAI1yF,EADZ,CAInB,YAAO2yF,CAAPC,GAAkB,IAAJ5yF,GAAd4yF,EACE,MAAO,CAAC,MAAO5yF,EAAGA,EAAGA,EADL,CAIlB,YAAO6yF,CAAPC,GAAkB,IAAJ9yF,GAAd8yF,EAEE,OADA9yF,EAAIsyF,EAActyF,GACX,CAACA,EAAGA,EAAGA,EAFE,CAKlB,aAAO+yF,CAAPC,GAAmB,IAAJhzF,GAAfgzF,EACE,MAAMC,EAAIZ,EAAcryF,GACxB,MAAO,IAAPhX,OAAWiqG,GAAJjqG,OAAQiqG,GAARjqG,OAAYiqG,EAFF,CAKnB,YAAOC,CAAPC,GAAwB,IAAVpzF,EAAGC,EAAGC,GAApBkzF,EACE,MAAO,CAAC,IAAK,GAAMpzF,EAAI,IAAOC,EAAI,IAAOC,EADnB,CAIxB,cAAOmzF,CAAQ31D,GACb,OAAOA,EAAMxxC,IAAIqmG,EADG,CAItB,eAAOe,CAAS51D,GACd,MAAO,IAAPz0C,OAAWy0C,EAAMxxC,IAAIomG,GAAepoG,KAAK,IADpB,CAIvB,aAAOqpG,GACL,MAAO,WADO,CAIhB,YAAOC,GACL,MAAO,CAAC,KADK,CAIf,eAAOC,CAAPC,GAA8B,IAAbpyF,EAAGmpB,EAAG/pB,EAAG+rC,GAA1BinD,EACE,MAAO,CACL,MACA,EAAI/oG,KAAKkT,IAAI,EAAGyD,EAAImrC,GACpB,EAAI9hD,KAAKkT,IAAI,EAAG6C,EAAI+rC,GACpB,EAAI9hD,KAAKkT,IAAI,EAAG4sB,EAAIgiB,GALM,CAS9B,eAAOknD,CAAPC,GAA8B,IAAbtyF,EAAGmpB,EAAG/pB,EAAG+rC,GAA1BmnD,EACE,MAAO,CACLrB,EAAc,EAAI5nG,KAAKkT,IAAI,EAAGyD,EAAImrC,IAClC8lD,EAAc,EAAI5nG,KAAKkT,IAAI,EAAG6C,EAAI+rC,IAClC8lD,EAAc,EAAI5nG,KAAKkT,IAAI,EAAG4sB,EAAIgiB,IAJR,CAQ9B,gBAAOonD,CAAUC,GACf,MAAMn2D,EAAMrgC,KAAKm2F,SAASK,GAAYhzF,MAAM,GAC5C,OAAOxD,KAAKg2F,SAAS31D,EAFM,CAK7B,eAAOo2D,CAAPC,GAA2B,IAAVh0F,EAAGC,EAAGC,GAAvB8zF,EACE,MAAM1yF,EAAI,EAAItB,EACRU,EAAI,EAAIT,EACRwqB,EAAI,EAAIvqB,EAEd,MAAO,CAAC,OAAQoB,EAAGZ,EAAG+pB,EADZ9/B,KAAKkT,IAAIyD,EAAGZ,EAAG+pB,GAJA,mGCzE7B,MAAMwpE,EAAuB,CAC3BC,SAAU,oBACVC,cAAe,qCAEfC,uBAAwB,oCACxBC,uBAAwB,oCACxBC,gCAAiC,qBACjCC,0CAA2C,KAC3CC,+CAAgD,KAChDC,mDAAoD,WACpDC,oDAAqD,YACrDC,sCAAuC,KACvCC,sCAAuC,KACvCC,0CAA2C,SAC3CC,yCAA0C,QAC1CC,+CACE,uDACFC,oDACE,iEACFC,mCAAoC,MACpCC,kCAAmC,KAEnCC,kBAAmB,oBACnBC,cAAe,gBACfC,iBAAkB,gBAClBC,kBAAmB,6BAEnBC,iBAAkB,iDAClBC,oBAAqB,8CACrB,wBAAyB,iCACzB,0BAA2B,mCAC3B,8BAA+B,4BAC/B,gCAAiC,8BACjCC,eAAgB,mBAEhBC,iBAAkB,aAClBC,eAAgB,WAChBC,gBAAiB,iBACjBC,kBAAmB,cACnBC,mBAAoB,aAEpBC,cAAe,2CACfC,mBAAoB,iCACpBC,mBAAoB,oBACpBC,0BAA2B,8BAC3BC,gBAAiB,8CAEjBC,uBAAwB,qBAExBC,uBACE,4DACFC,mBAAoB,qDACpBC,mBACE,4DAEFC,2BAA4B,qBAC5BC,6BAA8B,cAC9BC,uBAAwB,cACxBC,6BAA8B,qBAC9BC,6BAA8B,WAC9BC,kCAAmC,gBACnCC,mCAAoC,wBAMtC,SAASC,EAAgBzqG,EAAK6wC,GAC5B,OAAQ7wC,GACN,IAAK,mBACHA,EAAA,oBAAArD,OAAyC,IAAfk0C,EAAKtvB,MAAc,MAAQ,QAAQ,KAC7D,MACF,IAAK,yBACHvhB,EAAA,0BAAArD,OAA+C,IAAfk0C,EAAKmoB,MAAc,MAAQ,QAAQ,KAGvE,OAAO2uC,EAAqB3nG,IAAQ,EATF,CAHlC2nG,EAAqB+C,uBAAyB,gBA6BhD,MAAMlF,EAAW,CACfjmF,YAAAorF,SACS,QAGTprF,aAAAqrF,SACS,MAGT,SAAMjrG,CAAIK,GAAyD,IAApD6wC,EAAAz0C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAO,KACpB,OAvBJ,SAAyB7D,EAAMs4C,GAC7B,OAAKA,EAGEt4C,EAAK+G,WAAW,wBAAwB,CAAC/F,EAAK/B,IAC5CA,KAAQq5C,EAAOA,EAAKr5C,GAAQ,KAAOA,EAAO,OAH1Ce,CAF0B,CAuB1BsyG,CADmBzuG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAWquG,EAAgBzqG,EAAK6wC,GACzBA,EADgC,EAInE,eAAMjP,CAAUsK,GAAU,GAnI5Bl1C,EAAAwuG,SAAAA,gFCoBA,IAAArsF,EAAAf,EAAA,IApBAphB,EAAA6rG,SAgCA,MACE,mBAAOiI,CAAa/H,EAAM9/E,EAAIipB,EAAS+sD,EAASzyE,GAC9C,MAAM8tE,EAAa2E,EAAQh/D,SAAShX,EAAI,CAAEhjB,MAAO,OACjD,OAAQisC,EAAQ10C,MACd,IAAK,WAIH,GAHyB,OAArB88F,EAAWr0F,QACb8iG,EAAK3pG,YAAck7F,EAAWr0F,OAEjB,UAAXumB,EACF,MAEFu8E,EAAK/oG,iBAAiB,SAAS4zB,IAC7BqrE,EAAQ3+D,SAASrX,EAAI,CAAEhjB,MAAO2tB,EAAMqT,OAAOhhC,OAA3C,IAEF,MACF,IAAK,QACH,GAC8B,UAA5BisC,EAAQ0P,WAAWlkD,MACS,aAA5Bw0C,EAAQ0P,WAAWlkD,KACnB,CAQA,GAPI48F,EAAWr0F,QAAUisC,EAAQ0P,WAAWmvD,MAC1ChI,EAAKl/D,aAAa,WAAW,GACpBywD,EAAWr0F,QAAUisC,EAAQ0P,WAAWovD,QAGjDjI,EAAKtW,gBAAgB,WAER,UAAXjmE,EACF,MAEFu8E,EAAK/oG,iBAAiB,UAAU4zB,IAC9BqrE,EAAQ3+D,SAASrX,EAAI,CACnBhjB,MAAO2tB,EAAMqT,OAAOq9D,QAChB1wE,EAAMqT,OAAOk1D,aAAa,SAC1BvoE,EAAMqT,OAAOk1D,aAAa,WAHhC,GAZF,KAkBK,CAIL,GAHyB,OAArB7B,EAAWr0F,OACb8iG,EAAKl/D,aAAa,QAASywD,EAAWr0F,OAEzB,UAAXumB,EACF,MAEFu8E,EAAK/oG,iBAAiB,SAAS4zB,IAC7BqrE,EAAQ3+D,SAASrX,EAAI,CAAEhjB,MAAO2tB,EAAMqT,OAAOhhC,OAA3C,GARG,CAWP,MACF,IAAK,SACH,GAAyB,OAArBq0F,EAAWr0F,MAAgB,CAC7B8iG,EAAKl/D,aAAa,QAASywD,EAAWr0F,OACtC,IAAK,MAAMk/F,KAAUjzD,EAAQnlB,SACvBo4E,EAAOvjD,WAAW37C,QAAUq0F,EAAWr0F,MACzCk/F,EAAOvjD,WAAWwjD,UAAW,EACpBD,EAAOvjD,WAAWvpB,eAAe,oBACnC8sE,EAAOvjD,WAAWwjD,QANA,CAU/B2D,EAAK/oG,iBAAiB,SAAS4zB,IAC7B,MAAMp1B,EAAUo1B,EAAMqT,OAAOzoC,QACvByH,GACuB,IAA3BzH,EAAQknG,cACJ,GACAlnG,EAAQA,EAAQknG,eAAez/F,MACrCg5F,EAAQ3+D,SAASrX,EAAI,CAAEhjB,SAAvB,IAjEgD,CAuExD,oBAAOgrG,CAAPC,GAA6E,IAAxD,KAAEnI,EAAF,QAAQ72D,EAAR,QAAiB+sD,EAAU,KAA3B,OAAiCzyE,EAAjC,YAAyC2qE,GAA9D+Z,EACE,MAAM,WAAEtvD,GAAe1P,EACjBi/D,EAAsBpI,aAAgBqI,kBAEpB,UAApBxvD,EAAWlkD,OAGbkkD,EAAWpkD,KAAX,GAAAmF,OAAqBi/C,EAAWpkD,KAAK,KAAAmF,OAAG6pB,IAE1C,IAAK,MAAOxmB,EAAKC,KAAUH,OAAO26B,QAAQmhB,GACxC,GAAc,OAAV37C,QAA4B3D,IAAV2D,EAItB,OAAQD,GACN,IAAK,QACCC,EAAM5D,QACR0mG,EAAKl/D,aAAa7jC,EAAKC,EAAMrC,KAAK,MAEpC,MACF,IAAK,SAIH,MACF,IAAK,KACHmlG,EAAKl/D,aAAa,kBAAmB5jC,GACrC,MACF,IAAK,QACHH,OAAO4rB,OAAOq3E,EAAKzpG,MAAO2G,GAC1B,MACF,IAAK,cACH8iG,EAAK3pG,YAAc6G,EACnB,MACF,UACOkrG,GAAgC,SAARnrG,GAA0B,cAARA,IAC7C+iG,EAAKl/D,aAAa7jC,EAAKC,GAK3BkrG,GACFha,EAAY8F,kBACV8L,EACAnnD,EAAWj8B,KACXi8B,EAAWs7C,WAKX+B,GAAWr9C,EAAWyvD,QACxBr6F,KAAK85F,aAAa/H,EAAMnnD,EAAWyvD,OAAQn/D,EAAS+sD,EAnDqB,CA4D7E,aAAOjyE,CAAO4V,GACZ,MAAMq8D,EAAUr8D,EAAWva,kBACrB8uE,EAAcv0D,EAAWu0D,YACzBv1F,EAAOghC,EAAWkmE,QAClBt8E,EAASoW,EAAWpW,QAAU,UAC9B8kF,EAAWtyG,SAASG,cAAcyC,EAAKpE,MACzCoE,EAAKggD,YACP5qC,KAAKi6F,cAAc,CACjBlI,KAAMuI,EACNp/D,QAAStwC,EACT4qB,SACA2qE,gBAGJ,MAAMoa,EAAQ,CAAC,CAAC3vG,GAAO,EAAG0vG,IAEpBE,EAAU5uE,EAAWI,IAG3B,GAFAwuE,EAAQrnE,OAAOmnE,GAEX1uE,EAAWvV,SAAU,CACvB,MAAM5b,EAAA,UAAA9O,OAAsBigC,EAAWvV,SAAS5b,UAAU7N,KAAK,KAAK,KACpE4tG,EAAQlyG,MAAMmS,UAAYA,CAFH,CAMV,aAAX+a,GACFglF,EAAQ3nE,aAAa,QAAS,oBAIhC,MAAM+/C,EAAW,GAEjB,KAAO2nB,EAAMlvG,OAAS,GAAG,KAAAovG,EACvB,MAAO/vE,EAAQt9B,EAAG2kG,GAAQwI,EAAM/6D,IAAI,GACpC,GAAIpyC,EAAI,IAAMs9B,EAAO3U,SAAS1qB,OAAQ,CACpCkvG,EAAMjwC,MACN,QAFoC,CAKtC,MAAM+nB,EAAQ3nD,EAAO3U,WAAWwkF,EAAM/6D,IAAI,GAAG,IAC7C,GAAc,OAAV6yC,EACF,SAGF,MAAM,KAAE7rF,GAAS6rF,EACjB,GAAa,UAAT7rF,EAAkB,CACpB,MAAM6lF,EAAOrkF,SAAS21F,eAAetL,EAAMpjF,OAC3C2jF,EAASxiF,KAAKi8E,GACd0lB,EAAK5+D,OAAOk5C,GACZ,QAJoB,CAOtB,MAAMquB,EAAY,OAAAroB,QAAA,IAAAA,GAAA,QAAAooB,EAAApoB,EAAOznC,kBAAP,IAAA6vD,GAAAA,EAAmBE,MACjC3yG,SAASwnD,gBAAgB6iC,EAAMznC,WAAW+vD,MAAOn0G,GACjDwB,SAASG,cAAc3B,GAa3B,GAXAurG,EAAK5+D,OAAOunE,GACRroB,EAAMznC,YACR5qC,KAAKi6F,cAAc,CACjBlI,KAAM2I,EACNx/D,QAASm3C,EACT4V,UACAzyE,SACA2qE,gBAIA9N,EAAMt8D,UAAYs8D,EAAMt8D,SAAS1qB,OAAS,EAC5CkvG,EAAMnqG,KAAK,CAACiiF,GAAQ,EAAGqoB,SAClB,GAAIroB,EAAMpjF,MAAO,CACtB,MAAMo9E,EAAOrkF,SAAS21F,eAAetL,EAAMpjF,OACvCkZ,EAAA8R,QAAQm4D,gBAAgB5rF,IAC1BosF,EAASxiF,KAAKi8E,GAEhBquB,EAAUvnE,OAAOk5C,EALK,CArCD,CA8DzB,IAAK,MAAMuuB,KAAMJ,EAAQK,iBACvB,yDAEAD,EAAG/nE,aAAa,YAAY,GAG9B,MAAO,CACL+/C,WArGsB,CA8G1B,aAAOvoD,CAAOuB,GACZ,MAAMnxB,EAAA,UAAA9O,OAAsBigC,EAAWvV,SAAS5b,UAAU7N,KAAK,KAAK,KACpEg/B,EAAWI,IAAI1jC,MAAMmS,UAAYA,EACjCmxB,EAAWI,IAAIkK,QAAS,CAHA,wFCnQ5B,IAAA/uB,EAAAC,EAAA,GAKAohB,EAAAphB,EAAA,GACA6yE,EAAA7yE,EAAA,IACAE,EAAAF,EAAA,GACAwjB,EAAAxjB,EAAA,GAAA0zF,EAAA,IAAAx0F,QAAAy0F,EAAA,IAAAz0F,QAAA00F,EAAA,IAAA10F,QAAA20F,EAAA,IAAA30F,QAAA40F,EAAA,IAAA50F,QAAA60F,EAAA,IAAA70F,QAAA80F,EAAA,IAAA90F,QAAA+0F,EAAA,IAAA/0F,QAAAg1F,EAAA,IAAAh1F,QAAAi1F,EAAA,IAAAj1F,QAAAk1F,EAAA,IAAAl1F,QAAAm1F,EAAA,IAAAn1F,QAAAo1F,EAAA,IAAAp1F,QAAAq1F,EAAA,IAAAr1F,QAAAs1F,EAAA,IAAA/nF,QAKA,MAAM8jE,UAAkBnvD,EAAAa,iBAqCtBppB,WAAAA,CAAYoN,GACV1M,MAAM,IAAK0M,EAAQ7mB,KAAM,cAAzBytB,4BAAA,KAAA2nF,GAAAp1F,2BAAA,KAAAs0F,EArCY,GAAdt0F,2BAAA,KAAAu0F,EAEa,GAAbv0F,2BAAA,KAAAw0F,EAE0Bh7F,KAAK67F,kBAAkB53E,KAAKjkB,OAAtDwG,2BAAA,KAAAy0F,EAE2Bj7F,KAAK87F,mBAAmB73E,KAAKjkB,OAAxDwG,2BAAA,KAAA00F,EAEwBl7F,KAAK+7F,gBAAgB93E,KAAKjkB,OAAlDwG,2BAAA,KAAA20F,EAE0Bn7F,KAAKg8F,kBAAkB/3E,KAAKjkB,OAAtDwG,2BAAA,KAAA40F,EAEiB,IAAIlqC,QAArB1qD,2BAAA,KAAA60F,GAEkB,GAAlB70F,2BAAA,KAAA80F,GAEsB,GAAtB90F,2BAAA,KAAA+0F,GAEuB,GAAvB/0F,2BAAA,KAAAg1F,EAEY,MAAZh1F,2BAAA,KAAAi1F,EAEa,GAAbj1F,2BAAA,KAAAk1F,EAEc,GAAdl1F,2BAAA,KAAAm1F,EAEwB,MAYtB37F,KAAKogC,MAAQ/yB,EAAO+yB,OAAS,KAC7BpgC,KAAKi8F,UAAY5uF,EAAO4uF,WAAa,KACrCj8F,KAAKo7B,QAAU/tB,EAAO+tB,SAAW,KACjCp7B,KAAKirD,MAAQ,GACbjrD,KAAKk8F,aAAe,GACpBl8F,KAAKm8F,YAAc,GACnBn8F,KAAKo8F,YAAc,GACnBp8F,KAAKwyE,YAAc,EACnBxyE,KAAKq8F,aAAer8F,KAAKs8F,aAAe,EACxCt8F,KAAKktB,EAAI,EACTltB,KAAKmtB,EAAI,EACTntB,KAAKosB,sBAAuB,CAbV,CAiBpB,iBAAO6B,CAAWC,GAChB1F,EAAAa,iBAAiB4E,WAAWC,EAAM,CAChCE,QAAS,CAAC,+BAAgC,2BAFtB,CAOxB,0BAAOM,CAAoBhoC,EAAMuI,GAC/B,OAAQvI,GACN,KAAKygB,EAAA7U,2BAA2BO,cAC9B8kF,EAAU4kB,kBAAoBttG,EAC9B,MACF,KAAKkY,EAAA7U,2BAA2BM,UAC9B+kF,EAAUsD,cAAgBhsF,EAC1B,MACF,KAAKkY,EAAA7U,2BAA2BQ,YAC9B6kF,EAAU6kB,gBAAkBvtG,EAAQ,IATF,CAexC+mC,YAAAA,CAAatvC,EAAMuI,GACjB,OAAQvI,GACN,KAAKygB,EAAA7U,2BAA2BO,cAC9BgkB,kBAAA+kF,EAAA57F,KAAAy8F,GAAAp6F,KAAArC,KAAsB/Q,GACtB,MACF,KAAKkY,EAAA7U,2BAA2BM,UAC9BikB,kBAAA+kF,EAAA57F,KAAA08F,GAAAr6F,KAAArC,KAAkB/Q,GAClB,MACF,KAAKkY,EAAA7U,2BAA2BQ,YAC9B+jB,kBAAA+kF,EAAA57F,KAAA28F,GAAAt6F,KAAArC,KAAoB/Q,GATA,CAe1B,oCAAW2/B,GACT,MAAO,CACL,CAACznB,EAAA7U,2BAA2BO,cAAe8kF,EAAU4kB,mBACrD,CACEp1F,EAAA7U,2BAA2BM,UAC3B+kF,EAAUsD,eAAiBzyD,EAAAa,iBAAiBmE,mBAE9C,CACErmB,EAAA7U,2BAA2BQ,YAC3BzF,KAAK6kC,MAAkC,IAA5BylD,EAAU6kB,kBATY,CAevC,sBAAIvtE,GAAqB,IAAA2tE,EACvB,MAAO,CACL,CACEz1F,EAAA7U,2BAA2BO,cAC3BmN,KAAKi8F,WAAatkB,EAAU4kB,mBAE9B,CACEp1F,EAAA7U,2BAA2BM,UAC3BoN,KAAKogC,OACHu3C,EAAUsD,eACVzyD,EAAAa,iBAAiBmE,mBAErB,CACErmB,EAAA7U,2BAA2BQ,YAC3BzF,KAAK6kC,MAAM,KAAO,QAAP0qE,EAAO58F,KAAKo7B,eAAL,IAAAwhE,EAAAA,EAAgBjlB,EAAU6kB,mBAdzB,CAuFzB1nE,OAAAA,GACO90B,KAAK0qB,SAGV/pB,MAAMm0B,UACW,OAAb90B,KAAKgsB,MAIJhsB,KAAKqmB,SACRxP,kBAAA+kF,EAAA57F,KAAAkwC,GAAA7tC,KAAArC,MACA6W,kBAAA+kF,EAAA57F,KAAA68F,GAAAx6F,KAAArC,OAGGA,KAAKotB,kBAGRptB,KAAK0qB,OAAO/R,IAAI3Y,MAChB6W,kBAAA+kF,EAAA57F,KAAA88F,GAAAz6F,KAAArC,OAEF6W,kBAAA+kF,EAAA57F,KAAA+8F,GAAA16F,KAAArC,OApBQ,CAwBVopB,MAAAA,GACsB,OAAhBppB,KAAKqmB,SAIJrmB,KAAKswB,WACRtwB,KAAKuwB,SAIPvwB,KAAKqmB,OAAO9B,MAAQvkB,KAAKqmB,OAAO7B,OAAS,EACzCxkB,KAAKqmB,OAAO+C,SACZppB,KAAKqmB,OAAS,KAEdpf,sBAAAu0F,EAAAx7F,MAAeg9F,aACfl2F,sBAAA00F,EAAAx7F,KAAiB,MAEjBW,MAAMyoB,SAjBC,CAoBTyG,SAAAA,CAAUnF,IACH1qB,KAAK0qB,QAAUA,EAGlB1qB,KAAKisB,WAAW2Z,oBAAoB5lC,MAC3BA,KAAK0qB,QAAqB,OAAXA,GAIxB1qB,KAAKisB,WAAW0Z,iBAAiB3lC,MAEnCW,MAAMkvB,UAAUnF,EAXA,CAclB4Z,eAAAA,GACE,MAAOpT,EAAaC,GAAgBnxB,KAAKitB,iBACnC1I,EAAQvkB,KAAKukB,MAAQ2M,EACrB1M,EAASxkB,KAAKwkB,OAAS2M,EAC7BnxB,KAAKi9F,cAAc14E,EAAOC,EAJV,CAQlBiQ,cAAAA,GACMxtB,sBAAAo0F,EAAAr7F,OAAwC,OAAhBA,KAAKqmB,SAIjC1lB,MAAM8zB,iBACNz0B,KAAKyrB,cAAe,EACpBzrB,KAAKqmB,OAAOr9B,iBAAiB,cAA7Bie,sBAAAk0F,EAA4Cn7F,OAP7B,CAWjB00B,eAAAA,GACO10B,KAAK20B,gBAAkC,OAAhB30B,KAAKqmB,SAIjC1lB,MAAM+zB,kBACN10B,KAAKyrB,cAAgBzrB,KAAKswB,UAC1BtwB,KAAKgsB,IAAImD,UAAU/F,OAAO,WAE1BppB,KAAKqmB,OAAOvJ,oBACV,cADF7V,sBAAAk0F,EAEEn7F,OAXc,CAgBlBw0B,SAAAA,GACEx0B,KAAKyrB,cAAgBzrB,KAAKswB,SADhB,CAKZA,OAAAA,GACE,OACwB,IAAtBtwB,KAAKirD,MAAM5/D,QACY,IAAtB2U,KAAKirD,MAAM5/D,QAAyC,IAAzB2U,KAAKirD,MAAM,GAAG5/D,MAHpC,CA2RVklC,MAAAA,GACEtpB,sBAAAo0F,EAAIr7F,QAIJW,MAAM4vB,SAENvwB,KAAKs2B,WAAY,EACjBt2B,KAAK00B,kBAGL10B,KAAK4vB,kBAEL9oB,sBAAAu0F,EAAAr7F,MAAuB,GACvBA,KAAKgsB,IAAImD,UAAUxW,IAAI,YAEvB9B,kBAAA+kF,EAAA57F,KAAA+8F,GAAA16F,KAAArC,MAAqC,GACrCA,KAAKq1B,gBAELr1B,KAAK0qB,OAAOqtD,sBAA0C,GAItD/3E,KAAK2xB,YACL3xB,KAAKgsB,IAAI+J,MAAM,CACb2lD,eAAe,IAzBV,CA8BT7vD,OAAAA,CAAQjP,GACD5c,KAAK8vB,sBAGVnvB,MAAMkrB,QAAQjP,GACd5c,KAAKy0B,iBALQ,CAYfunE,iBAAAA,CAAkBp/E,GACK,IAAjBA,EAAMiX,QAAiB7zB,KAAK20B,iBAA5B1tB,sBAAAo0F,EAA8Cr7F,QAMlDA,KAAK4vB,kBAELhT,EAAMxzB,iBAEa,UAAfwzB,EAAMl2B,MACRsZ,KAAKgsB,IAAI+J,QAGXlf,kBAAA+kF,EAAA57F,KAAAk9F,GAAA76F,KAAArC,KAAmB4c,EAAM1H,QAAS0H,EAAMzH,SAfjB,CAsBzB0mF,iBAAAA,CAAkBj/E,GAChBA,EAAMxzB,iBACNytB,kBAAA+kF,EAAA57F,KAAAm9F,GAAA96F,KAAArC,KAAW4c,EAAM1H,QAAS0H,EAAMzH,QAFT,CASzB4mF,eAAAA,CAAgBn/E,GACdA,EAAMxzB,iBACNytB,kBAAA+kF,EAAA57F,KAAAo9F,GAAA/6F,KAAArC,KAAiB4c,EAFI,CASvBk/E,kBAAAA,CAAmBl/E,GACjB/F,kBAAA+kF,EAAA57F,KAAAo9F,GAAA/6F,KAAArC,KAAiB4c,EADO,CAgE1B,eAAIwY,GACF,OAAQp1B,KAAKswB,WAANrpB,sBAAAo0F,EAAmBr7F,KADV,CAKlBgW,MAAAA,GACE,GAAIhW,KAAKgsB,IACP,OAAOhsB,KAAKgsB,IAGd,IAAIqwD,EAAOC,EACPt8E,KAAKukB,QACP83D,EAAQr8E,KAAKktB,EACbovD,EAAQt8E,KAAKmtB,GAGfxsB,MAAMqV,SAENwS,EAAAa,iBAAiB8E,aACdx/B,IAAI,0BACJoe,MAAK/hB,IAAA,IAAAqyG,EAAA,OAAO,QAAPA,EAAOr9F,KAAKgsB,WAAL,IAAAqxE,OAAA,EAAAA,EAAUxqE,aAAa,aAAc7nC,EAFpD,IAIA,MAAOkiC,EAAGC,EAAG2L,EAAGC,GAAVliB,kBAAA+kF,EAAe57F,KAAAs9F,GAAAj7F,KAAArC,MAMrB,GALAA,KAAKwwB,MAAMtD,EAAGC,EAAG,EAAG,GACpBntB,KAAKmyB,QAAQ2G,EAAGC,GAEhBliB,kBAAA+kF,EAAA57F,KAAAkwC,GAAA7tC,KAAArC,MAEIA,KAAKukB,MAAO,CAEd,MAAO2M,EAAaC,GAAgBnxB,KAAKitB,iBACzCjtB,KAAKw2B,eAAex2B,KAAKukB,MAAQ2M,EAAalxB,KAAKwkB,OAAS2M,GAC5DnxB,KAAKwwB,MACH6rD,EAAQnrD,EACRorD,EAAQnrD,EACRnxB,KAAKukB,MAAQ2M,EACblxB,KAAKwkB,OAAS2M,GAEhBrqB,sBAAAy0F,EAAAv7F,MAA4B,GAC5B6W,kBAAA+kF,EAAA57F,KAAA88F,GAAAz6F,KAAArC,MACAA,KAAKmyB,QAAQnyB,KAAKukB,MAAQ2M,EAAalxB,KAAKwkB,OAAS2M,GACrDta,kBAAA+kF,EAAA57F,KAAAu9F,GAAAl7F,KAAArC,MACAA,KAAKgsB,IAAImD,UAAUxW,IAAI,WAdT,MAgBd3Y,KAAKgsB,IAAImD,UAAUxW,IAAI,WACvB3Y,KAAKy0B,iBAKP,OAFA5d,kBAAA+kF,EAAA57F,KAAA68F,GAAAx6F,KAAArC,MAEOA,KAAKgsB,GA7CL,CAiETixE,aAAAA,CAAc14E,EAAOC,GACnB,MAAMg5E,EAAenwG,KAAK6kC,MAAM3N,GAC1Bk5E,EAAgBpwG,KAAK6kC,MAAM1N,GACjC,GACEvd,sBAAAw0F,EAAAz7F,QAAoBw9F,GACpBv2F,sBAAAy0F,EAAA17F,QAAqBy9F,EAErB,OAGF32F,sBAAA20F,EAAAz7F,KAAkBw9F,GAClB12F,sBAAA40F,EAAA17F,KAAmBy9F,GAEnBz9F,KAAKqmB,OAAO/9B,MAAMyhD,WAAa,SAE/B,MAAO7Y,EAAaC,GAAgBnxB,KAAKitB,iBACzCjtB,KAAKukB,MAAQA,EAAQ2M,EACrBlxB,KAAKwkB,OAASA,EAAS2M,EACvBnxB,KAAKuvB,oBAELtoB,sBAAAo0F,EAAIr7F,OACF6W,kBAAA+kF,EAAA57F,KAAA09F,GAAAr7F,KAAArC,KAAqBukB,EAAOC,GAG9B3N,kBAAA+kF,EAAA57F,KAAA88F,GAAAz6F,KAAArC,MACA6W,kBAAA+kF,EAAA57F,KAAAu9F,GAAAl7F,KAAArC,MAEAA,KAAKqmB,OAAO/9B,MAAMyhD,WAAa,UAI/B/pC,KAAKsyB,SA/BsB,CA+R7B,kBAAO2C,CAAYpuB,EAAM6jB,EAAQwB,GAC/B,GAAIrlB,aAAgBozE,EAAAqF,qBAClB,OAAO,KAET,MAAM1xD,EAASjtB,MAAMs0B,YAAYpuB,EAAM6jB,EAAQwB,GAE/C0B,EAAOquE,UAAYp1F,EAAKo1F,UACxBruE,EAAOwS,MAAQj5B,EAAA3E,KAAKC,gBAAgBoE,EAAKu5B,OACzCxS,EAAOwN,QAAUv0B,EAAKu0B,QAEtB,MAAO3O,EAAWC,GAAckB,EAAOb,eACjCxI,EAAQqJ,EAAOrJ,MAAQkI,EACvBjI,EAASoJ,EAAOpJ,OAASkI,EACzB8lD,EAAc5kD,EAAOkE,YACrBkrD,EAAUn2E,EAAKo1F,UAAY,EAEjCn1F,sBAAAu0F,EAAAztE,GAAyB,GACzB9mB,sBAAA20F,EAAA7tE,EAAoBvgC,KAAK6kC,MAAM3N,IAC/Bzd,sBAAA40F,EAAA9tE,EAAqBvgC,KAAK6kC,MAAM1N,IAEhC,MAAM,MAAEymC,EAAF,KAAS1mD,EAAT,SAAe0Q,GAAapO,EAElC,IAAK,IAAI,OAAE82F,KAAY1yC,EAAO,CAC5B0yC,EAAAC,EAAAv7F,KAASs1E,EAA8BgmB,EAAQp5F,EAAM0Q,GACrD,MAAMk2C,EAAO,GACbv9B,EAAOq9B,MAAM76D,KAAK+6D,GAClB,IAAIgG,EAAKqhB,GAAemrB,EAAO,GAAK3gB,GAChCxuF,EAAKgkF,GAAemrB,EAAO,GAAK3gB,GACpC,IAAK,IAAI5vF,EAAI,EAAGa,EAAK0vG,EAAOtyG,OAAQ+B,EAAIa,EAAIb,GAAK,EAAG,CAClD,MAAMywG,EAAMrrB,GAAemrB,EAAOvwG,GAAK4vF,GACjC8gB,EAAMtrB,GAAemrB,EAAOvwG,EAAI,GAAK4vF,GACrC+gB,EAAMvrB,GAAemrB,EAAOvwG,EAAI,GAAK4vF,GACrCghB,EAAMxrB,GAAemrB,EAAOvwG,EAAI,GAAK4vF,GACrCihB,EAAMzrB,GAAemrB,EAAOvwG,EAAI,GAAK4vF,GACrCkhB,EAAM1rB,GAAemrB,EAAOvwG,EAAI,GAAK4vF,GAC3C7xB,EAAK/6D,KAAK,CACR,CAAC+gE,EAAI3iE,GACL,CAACqvG,EAAKC,GACN,CAACC,EAAKC,GACN,CAACC,EAAKC,KAER/sC,EAAK8sC,EACLzvG,EAAK0vG,CAd6C,CAgBpD,MAAMC,EAAAtnF,kBAjmCN8gE,EAimCe33E,KAAAo+F,GAAA/7F,KAAArC,KAAkBmrD,GACjCv9B,EAAOsuE,aAAa9rG,KAAK+tG,EAvBG,CA0B9B,MAAM3uC,EAAA34C,kBAAA+kF,EAAOhuE,EAAAywE,GAAAh8F,KAAAurB,GAKb,OAJA9mB,sBAAAi0F,EAAAntE,EAAoBvgC,KAAKsW,IAAI6kB,EAAAa,iBAAiBqN,SAAU84B,EAAK,GAAKA,EAAK,KACvE1oD,sBAAAg0F,EAAAltE,EAAqBvgC,KAAKsW,IAAI6kB,EAAAa,iBAAiBqN,SAAU84B,EAAK,GAAKA,EAAK,KACxE34C,kBAAA+kF,EAAAhuE,EAAA8vE,GAAAr7F,KAAAurB,EAAuBrJ,EAAOC,GAEvBoJ,CArDmC,CAyD5CxD,SAAAA,GACE,GAAIpqB,KAAKswB,UACP,OAAO,KAGT,MAAM/rB,EAAOvE,KAAKo0B,QAAQ,EAAG,GACvBgM,EAAQ5X,EAAAa,iBAAiBoE,cAAc0S,QAAQngC,KAAKi8B,IAAIokB,aAE9D,MAAO,CACLo5B,eAAgBtyE,EAAAlV,qBAAqBI,IACrC+tC,QACA67D,UAAWj8F,KAAKi8F,UAChB7gE,QAASp7B,KAAKo7B,QACd6vB,MAAAp0C,kBAAA+kF,EAAO57F,KAAAs+F,GAAAj8F,KAAArC,KACLA,KAAKwyE,YAAcxyE,KAAK8xB,YACxB9xB,KAAKq8F,aACLr8F,KAAKs8F,aACL/3F,GAEFwP,UAAW/T,KAAK+T,UAChBxP,OACA0Q,SAAUjV,KAAKiV,SACfgoE,mBAAoBj9E,KAAKusB,oBAtBjB,EA9mCd,SAAAkwE,EAiImBR,GACf,MAAMsC,EAAiBv+F,KAAKi8F,UAC5Bj8F,KAAKwvB,YAAY,CACf0I,IAAKA,KACHl4B,KAAKi8F,UAAYA,EACjBplF,kBAAA+kF,EAAA57F,KAAA+8F,GAAA16F,KAAArC,KAAA,EAEFm4B,KAAMA,KACJn4B,KAAKi8F,UAAYsC,EACjB1nF,kBAAA+kF,EAAA57F,KAAA+8F,GAAA16F,KAAArC,KAAA,EAEFo4B,UAAU,EACV1xC,KAAMygB,EAAA7U,2BAA2BO,cACjC+rC,qBAAqB,EACrBC,UAAU,GAdc,UAAA69D,EAsBft8D,GACX,MAAMi9C,EAAar9E,KAAKogC,MACxBpgC,KAAKwvB,YAAY,CACf0I,IAAKA,KACHl4B,KAAKogC,MAAQA,EACbvpB,kBAAA+kF,EAAA57F,KAAAu9F,GAAAl7F,KAAArC,KAAA,EAEFm4B,KAAMA,KACJn4B,KAAKogC,MAAQi9C,EACbxmE,kBAAA+kF,EAAA57F,KAAAu9F,GAAAl7F,KAAArC,KAAA,EAEFo4B,UAAU,EACV1xC,KAAMygB,EAAA7U,2BAA2BM,UACjCgsC,qBAAqB,EACrBC,UAAU,GAdM,UAAA89D,EAsBLvhE,GACbA,GAAW,IACX,MAAMojE,EAAex+F,KAAKo7B,QAC1Bp7B,KAAKwvB,YAAY,CACf0I,IAAKA,KACHl4B,KAAKo7B,QAAUA,EACfvkB,kBAAA+kF,EAAA57F,KAAAu9F,GAAAl7F,KAAArC,KAAA,EAEFm4B,KAAMA,KACJn4B,KAAKo7B,QAAUojE,EACf3nF,kBAAA+kF,EAAA57F,KAAAu9F,GAAAl7F,KAAArC,KAAA,EAEFo4B,UAAU,EACV1xC,KAAMygB,EAAA7U,2BAA2BQ,YACjC8rC,qBAAqB,EACrBC,UAAU,GAfU,UAAAy+D,IA8HtB,MAAM,eACJhuE,EACArC,kBAAmB1I,EAAOC,IACxBxkB,KACJ,OAAQsvB,GACN,KAAK,GACH,MAAO,CAAC,EAAG9K,EAAQA,EAAQD,GAC7B,KAAK,IACH,MAAO,CAACA,EAAOC,EAAQD,EAAOC,GAChC,KAAK,IACH,MAAO,CAACD,EAAO,EAAGC,EAAQD,GAC5B,QACE,MAAO,CAAC,EAAG,EAAGA,EAAOC,GAbT,UAAAi6E,IAqBhB,MAAM,IAAExiE,EAAF,MAAOmE,EAAP,QAAchF,EAAd,UAAuB6gE,EAAvB,YAAkCnqE,EAAlC,YAA+C0gD,GAAgBxyE,KACrEi8B,EAAIsgB,UAAa0/C,EAAYnqE,EAAe0gD,EAC5Cv2C,EAAIwkB,QAAU,QACdxkB,EAAIykB,SAAW,QACfzkB,EAAI0kB,WAAa,GACjB1kB,EAAIokB,YAAJ,GAAA10D,OAAqBy0C,GAAHz0C,QAAW,EAAAi/B,EAAA8zE,cAAatjE,GAN/B,UAAA8hE,EAcChwE,EAAGC,GAWiB,IAAAwxE,EAVhC3+F,KAAKqmB,OAAOr9B,iBAAiB,cAAese,EAAAyrB,eAC5C/yB,KAAKqmB,OAAOr9B,iBAAiB,eAA7Bie,sBAAAg0F,EAA6Cj7F,OAC7CA,KAAKqmB,OAAOr9B,iBAAiB,cAA7Bie,sBAAA+zF,EAA4Ch7F,OAC5CA,KAAKqmB,OAAOr9B,iBAAiB,YAA7Bie,sBAAAi0F,EAA0Cl7F,OAC1CA,KAAKqmB,OAAOvJ,oBACV,cADF7V,sBAAAk0F,EAEEn7F,OAGFA,KAAKs2B,WAAY,EACbrvB,sBAAAs0F,EAACv7F,QACH8G,sBAAAy0F,EAAAv7F,MAA4B,GAC5B6W,kBAAA+kF,EAAA57F,KAAA88F,GAAAz6F,KAAArC,MACAA,KAAKi8F,YAALj8F,KAAKi8F,UAActkB,EAAU4kB,mBAC7Bv8F,KAAKogC,QAALpgC,KAAKogC,MACHu3C,EAAUsD,eAAiBzyD,EAAAa,iBAAiBmE,mBAC9C,QAAAmxE,EAAA3+F,KAAKo7B,eAAL,IAAAujE,IAAA3+F,KAAKo7B,QAAYu8C,EAAU6kB,kBAE7Bx8F,KAAKo8F,YAAYhsG,KAAK,CAAC88B,EAAGC,IAC1BrmB,sBAAAw0F,EAAAt7F,MAA2B,GAC3B6W,kBAAA+kF,EAAA57F,KAAAy+F,GAAAp8F,KAAArC,MAEA8G,sBAAA60F,EAAA37F,MAA6B,KAC3B6W,kBAAA+kF,EAAA57F,KAAA4+F,GAAAv8F,KAAArC,MACAiH,sBAAA00F,EAAI37F,OACFxW,OAAO4+B,sBAAPnhB,sBAAA00F,EAA6B37F,MADC,IAIlCxW,OAAO4+B,sBAAPnhB,sBAAA00F,EAA6B37F,MA7BX,UAAAm9F,EAqCdjwE,EAAGC,GACP,MAAO0xE,EAAOC,GAAS9+F,KAAKo8F,YAAY58D,IAAI,GAC5C,GAAIx/B,KAAKo8F,YAAY/wG,OAAS,GAAK6hC,IAAM2xE,GAAS1xE,IAAM2xE,EACtD,OAEF,MAAM1C,EAAcp8F,KAAKo8F,YACzB,IAAI+B,EAAAl3F,sBAAAm0F,EAASp7F,MAIb,GAHAo8F,EAAYhsG,KAAK,CAAC88B,EAAGC,IACrBrmB,sBAAAw0F,EAAAt7F,MAA2B,GAEvBo8F,EAAY/wG,QAAU,EAGxB,OAFA8yG,EAAOzjG,UAAU0hG,EAAY,SAC7B+B,EAAOxjG,OAAOuyB,EAAGC,GAIQ,IAAvBivE,EAAY/wG,SACdyb,sBAAAs0F,EAAAp7F,KAAsBm+F,EAAS,IAAIjtC,QACnCitC,EAAOzjG,UAAU0hG,EAAY,KAG/BvlF,kBAAA+kF,EAAA57F,KAAA++F,GAAA18F,KAAArC,KACEm+F,KACG/B,EAAY58D,IAAI,MAChB48D,EAAY58D,IAAI,GACnBtS,EACAC,EA1BQ,UAAA6xE,IA+BV,GAAgC,IAA5Bh/F,KAAKo8F,YAAY/wG,OACnB,OAEF,MAAM4zG,EAAYj/F,KAAKo8F,YAAY58D,IAAI,GACvCv4B,sBAAAm0F,EAAAp7F,MAAoBrF,UAAUskG,EALrB,UAAAC,EAaEhyE,EAAGC,GAYd,IAAIwwE,EACJ,GAZA72F,sBAAA60F,EAAA37F,KAA6B,MAE7BktB,EAAI7/B,KAAKkT,IAAIlT,KAAKsW,IAAIupB,EAAG,GAAIltB,KAAKqmB,OAAO9B,OACzC4I,EAAI9/B,KAAKkT,IAAIlT,KAAKsW,IAAIwpB,EAAG,GAAIntB,KAAKqmB,OAAO7B,QAEzC3N,kBAAA+kF,EAAA57F,KAAAm9F,GAAA96F,KAAArC,KAAWktB,EAAGC,GACdtW,kBAAA+kF,EAAA57F,KAAAg/F,GAAA38F,KAAArC,MAMgC,IAA5BA,KAAKo8F,YAAY/wG,OACnBsyG,EAAA9mF,kBAAA+kF,EAAS57F,KAAAm/F,GAAA98F,KAAArC,UACJ,CAEL,MAAMo/F,EAAK,CAAClyE,EAAGC,GACfwwE,EAAS,CAAC,CAACyB,EAAIA,EAAG57F,QAAS47F,EAAG57F,QAAS47F,GAHlC,CAKP,MAAMjB,EAAAl3F,sBAAAm0F,EAASp7F,MACTo8F,EAAcp8F,KAAKo8F,YACzBp8F,KAAKo8F,YAAc,GACnBt1F,sBAAAs0F,EAAAp7F,KAAsB,IAAIkxD,QAwB1BlxD,KAAKwvB,YAAY,CAAE0I,IAtBPA,KACVl4B,KAAKm8F,YAAY/rG,KAAKgsG,GACtBp8F,KAAKirD,MAAM76D,KAAKutG,GAChB39F,KAAKk8F,aAAa9rG,KAAK+tG,GACvBn+F,KAAK80B,SAAL,EAkBsBqD,KAfXA,KACXn4B,KAAKm8F,YAAY7xC,MACjBtqD,KAAKirD,MAAMX,MACXtqD,KAAKk8F,aAAa5xC,MACQ,IAAtBtqD,KAAKirD,MAAM5/D,OACb2U,KAAKopB,UAEAppB,KAAKqmB,SACRxP,kBAAA+kF,EAAA57F,KAAAkwC,GAAA7tC,KAAArC,MACA6W,kBAAA+kF,EAAA57F,KAAA68F,GAAAx6F,KAAArC,OAEF6W,kBAAA+kF,EAAA57F,KAAA+8F,GAAA16F,KAAArC,MALK,EASqBo4B,UAAU,GA/CvB,UAAAwmE,IAmDjB,IAAI33F,sBAAAq0F,EAACt7F,MACH,OAEF8G,sBAAAw0F,EAAAt7F,MAA2B,GAET3S,KAAKk1D,KAAKviD,KAAKi8F,UAAYj8F,KAAK8xB,aAAlD,MACMutE,EAAar/F,KAAKo8F,YAAY54F,OAAO,GACrC0pB,EAAImyE,EAAWzwG,KAAIwwG,GAAMA,EAAG,KAC5BjyE,EAAIkyE,EAAWzwG,KAAIwwG,GAAMA,EAAG,MAM5B,IAAEnjE,IALK5uC,KAAKkT,OAAO2sB,GACZ7/B,KAAKsW,OAAOupB,GACZ7/B,KAAKkT,OAAO4sB,GACZ9/B,KAAKsW,OAAOwpB,GAETntB,MAChBi8B,EAAI1hC,OASF0hC,EAAI2qB,UAAU,EAAG,EAAG5mD,KAAKqmB,OAAO9B,MAAOvkB,KAAKqmB,OAAO7B,QAGrD,IAAK,MAAM2mC,KAAQnrD,KAAKk8F,aACtBjgE,EAAIhhC,OAAOkwD,GAEblvB,EAAIhhC,OAAJgM,sBAAAm0F,EAAWp7F,OAEXi8B,EAAIzhC,SAjCQ,UAAAukG,EAoCGZ,EAAQn5F,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC3C,MAAMi6F,GAASt6F,EAAKE,GAAM,EACpBq6F,GAASt6F,EAAKE,GAAM,EACpBG,GAAMJ,EAAKE,GAAM,EACjBG,GAAMJ,EAAKE,GAAM,EAEvB84F,EAAO10C,cACL61C,EAAS,GAAKp6F,EAAKo6F,GAAU,EAC7BC,EAAS,GAAKp6F,EAAKo6F,GAAU,EAC7Bj6F,EAAM,GAAKJ,EAAKI,GAAO,EACvBC,EAAM,GAAKJ,EAAKI,GAAO,EACvBD,EACAC,EAZ6C,UAAA45F,IAiB/C,MAAMh0C,EAAOnrD,KAAKo8F,YAClB,GAAIjxC,EAAK9/D,QAAU,EACjB,MAAO,CAAC,CAAC8/D,EAAK,GAAIA,EAAK,GAAIA,EAAK3rB,IAAI,GAAI2rB,EAAK3rB,IAAI,KAGnD,MAAMggE,EAAe,GACrB,IAAIpyG,GACC4X,EAAIC,GAAMkmD,EAAK,GACpB,IAAK/9D,EAAI,EAAGA,EAAI+9D,EAAK9/D,OAAS,EAAG+B,IAAK,CACpC,MAAO8X,EAAIC,GAAMgmD,EAAK/9D,IACfgY,EAAIC,GAAM8lD,EAAK/9D,EAAI,GACpBkY,GAAMJ,EAAKE,GAAM,EACjBG,GAAMJ,EAAKE,GAAM,EAKjBo6F,EAAW,CAACz6F,EAAM,GAAKE,EAAKF,GAAO,EAAGC,EAAM,GAAKE,EAAKF,GAAO,GAC7Dy6F,EAAW,CAACp6F,EAAM,GAAKJ,EAAKI,GAAO,EAAGC,EAAM,GAAKJ,EAAKI,GAAO,GAEnEi6F,EAAapvG,KAAK,CAAC,CAAC4U,EAAIC,GAAKw6F,EAAUC,EAAU,CAACp6F,EAAIC,MAErDP,EAAIC,GAAM,CAACK,EAAIC,EAdoB,CAiBtC,MAAOL,EAAIC,GAAMgmD,EAAK/9D,IACfgY,EAAIC,GAAM8lD,EAAK/9D,EAAI,GAGpBqyG,EAAW,CAACz6F,EAAM,GAAKE,EAAKF,GAAO,EAAGC,EAAM,GAAKE,EAAKF,GAAO,GAC7Dy6F,EAAW,CAACt6F,EAAM,GAAKF,EAAKE,GAAO,EAAGC,EAAM,GAAKF,EAAKE,GAAO,GAGnE,OADAm6F,EAAapvG,KAAK,CAAC,CAAC4U,EAAIC,GAAKw6F,EAAUC,EAAU,CAACt6F,EAAIC,KAC/Cm6F,CAlCe,UAAAjC,IAyCtB,GAAIv9F,KAAKswB,UAEP,YADAzZ,kBAAA+kF,EAAA57F,KAAA2/F,GAAAt9F,KAAArC,MAGF6W,kBAAA+kF,EAAA57F,KAAAy+F,GAAAp8F,KAAArC,MAEA,MAAM,OAAEqmB,EAAF,IAAU4V,GAAQj8B,KACxBi8B,EAAIgf,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAChChf,EAAI2qB,UAAU,EAAG,EAAGvgC,EAAO9B,MAAO8B,EAAO7B,QACzC3N,kBAAA+kF,EAAA57F,KAAA2/F,GAAAt9F,KAAArC,MAEA,IAAK,MAAMmrD,KAAQnrD,KAAKk8F,aACtBjgE,EAAIhhC,OAAOkwD,EAbL,UAAAiyC,EA8GExgF,GACV5c,KAAKqmB,OAAOvJ,oBACV,eADF7V,sBAAAg0F,EAEEj7F,OAEFA,KAAKqmB,OAAOvJ,oBACV,cADF7V,sBAAA+zF,EAEEh7F,OAEFA,KAAKqmB,OAAOvJ,oBAAoB,YAAhC7V,sBAAAi0F,EAA6Cl7F,OAC7CA,KAAKqmB,OAAOr9B,iBAAiB,cAA7Bie,sBAAAk0F,EAA4Cn7F,OAI5Ckc,YAAW,KACTlc,KAAKqmB,OAAOvJ,oBAAoB,cAAexV,EAAAyrB,cAA/C,GACC,IAEHlc,kBAAA+kF,EAAA57F,KAAAk/F,GAAA78F,KAAArC,KAAkB4c,EAAM1H,QAAS0H,EAAMzH,SAEvCnV,KAAKguB,yBAILhuB,KAAK0vB,iBAxBY,UAAAwgB,IA+BjBlwC,KAAKqmB,OAASr+B,SAASG,cAAc,UACrC6X,KAAKqmB,OAAO9B,MAAQvkB,KAAKqmB,OAAO7B,OAAS,EACzCxkB,KAAKqmB,OAAOuM,UAAY,kBAExBpK,EAAAa,iBAAiB8E,aACdx/B,IAAI,gCACJoe,MAAK/hB,IAAA,IAAA40G,EAAA,OAAO,QAAPA,EAAO5/F,KAAKqmB,cAAL,IAAAu5E,OAAA,EAAAA,EAAa/sE,aAAa,aAAc7nC,EAFvD,IAGAgV,KAAKgsB,IAAImH,OAAOnzB,KAAKqmB,QACrBrmB,KAAKi8B,IAAMj8B,KAAKqmB,OAAO6V,WAAW,KATpB,UAAA2gE,IAgBd/1F,sBAAA00F,EAAAx7F,KAAiB,IAAI6/F,gBAAep2E,IAClC,MAAMllB,EAAOklB,EAAQ,GAAGq2E,YACpBv7F,EAAKggB,OAAShgB,EAAKigB,QACrBxkB,KAAKi9F,cAAc14F,EAAKggB,MAAOhgB,EAAKigB,OADP,KAIjCvd,sBAAAu0F,EAAAx7F,MAAe+/F,QAAQ//F,KAAKgsB,IAPZ,UAAA8wE,IAiEhB,IAAI71F,sBAAAs0F,EAACv7F,MACH,OAEF,MAAOkxB,EAAaC,GAAgBnxB,KAAKitB,iBACzCjtB,KAAKqmB,OAAO9B,MAAQl3B,KAAKk1D,KAAKviD,KAAKukB,MAAQ2M,GAC3ClxB,KAAKqmB,OAAO7B,OAASn3B,KAAKk1D,KAAKviD,KAAKwkB,OAAS2M,GAC7Cta,kBAAA+kF,EAAA57F,KAAA2/F,GAAAt9F,KAAArC,KAPe,UAAA09F,EAmDDn5E,EAAOC,GACrB,MAAMw4D,EAAAnmE,kBAAA+kF,EAAU57F,KAAAggG,GAAA39F,KAAArC,MACVigG,GAAgB17E,EAAQy4D,GAAR/1E,sBAAA8zF,EAAmB/6F,MACnCkgG,GAAgB17E,EAASw4D,GAAT/1E,sBAAA6zF,EAAoB96F,MAC1CA,KAAKwyE,YAAcnlF,KAAKkT,IAAI0/F,EAAcC,EAJb,UAAAP,IAW7B,MAAM3iB,EAAUnmE,kBAAA+kF,EAAA57F,KAAAggG,GAAA39F,KAAArC,MAAqB,EACrCA,KAAKi8B,IAAIgf,aACPj7C,KAAKwyE,YACL,EACA,EACAxyE,KAAKwyE,YACLxyE,KAAKq8F,aAAer8F,KAAKwyE,YAAcwK,EACvCh9E,KAAKs8F,aAAet8F,KAAKwyE,YAAcwK,EARxB,UAAAohB,EAiBCT,GAClB,MAAMQ,EAAS,IAAIjtC,OACnB,IAAK,IAAI9jE,EAAI,EAAGa,EAAK0vG,EAAOtyG,OAAQ+B,EAAIa,EAAIb,IAAK,CAC/C,MAAO6W,EAAOw7F,EAAUC,EAAUx7F,GAAUy5F,EAAOvwG,GACzC,IAANA,GACF+wG,EAAOzjG,UAAUuJ,GAEnBk6F,EAAO10C,cACLg2C,EAAS,GACTA,EAAS,GACTC,EAAS,GACTA,EAAS,GACTx7F,EAAO,GACPA,EAAO,GAXsC,CAcjD,OAAOi6F,CAhBmB,UAAAgC,EAmBHvvC,EAAQrsD,EAAM0Q,GACrC,MAAO6uE,EAAKC,EAAKH,EAAKC,GAAOt/E,EAE7B,OAAQ0Q,GACN,KAAK,EACH,IAAK,IAAI7nB,EAAI,EAAGa,EAAK2iE,EAAOvlE,OAAQ+B,EAAIa,EAAIb,GAAK,EAC/CwjE,EAAOxjE,IAAM02F,EACblzB,EAAOxjE,EAAI,GAAKy2F,EAAMjzB,EAAOxjE,EAAI,GAEnC,MACF,KAAK,GACH,IAAK,IAAIA,EAAI,EAAGa,EAAK2iE,EAAOvlE,OAAQ+B,EAAIa,EAAIb,GAAK,EAAG,CAClD,MAAM8/B,EAAI0jC,EAAOxjE,GACjBwjE,EAAOxjE,GAAKwjE,EAAOxjE,EAAI,GAAK02F,EAC5BlzB,EAAOxjE,EAAI,GAAK8/B,EAAI62D,CAH8B,CAKpD,MACF,KAAK,IACH,IAAK,IAAI32F,EAAI,EAAGa,EAAK2iE,EAAOvlE,OAAQ+B,EAAIa,EAAIb,GAAK,EAC/CwjE,EAAOxjE,GAAKw2F,EAAMhzB,EAAOxjE,GACzBwjE,EAAOxjE,EAAI,IAAM22F,EAEnB,MACF,KAAK,IACH,IAAK,IAAI32F,EAAI,EAAGa,EAAK2iE,EAAOvlE,OAAQ+B,EAAIa,EAAIb,GAAK,EAAG,CAClD,MAAM8/B,EAAI0jC,EAAOxjE,GACjBwjE,EAAOxjE,GAAKw2F,EAAMhzB,EAAOxjE,EAAI,GAC7BwjE,EAAOxjE,EAAI,GAAKy2F,EAAM32D,CAH4B,CAKpD,MACF,QACE,MAAM,IAAIjjC,MAAM,oBAEpB,OAAO2mE,CAjCwC,UAAAgtC,EAoCtBhtC,EAAQrsD,EAAM0Q,GACvC,MAAO6uE,EAAKC,EAAKH,EAAKC,GAAOt/E,EAE7B,OAAQ0Q,GACN,KAAK,EACH,IAAK,IAAI7nB,EAAI,EAAGa,EAAK2iE,EAAOvlE,OAAQ+B,EAAIa,EAAIb,GAAK,EAC/CwjE,EAAOxjE,IAAM02F,EACblzB,EAAOxjE,EAAI,GAAKy2F,EAAMjzB,EAAOxjE,EAAI,GAEnC,MACF,KAAK,GACH,IAAK,IAAIA,EAAI,EAAGa,EAAK2iE,EAAOvlE,OAAQ+B,EAAIa,EAAIb,GAAK,EAAG,CAClD,MAAM8/B,EAAI0jC,EAAOxjE,GACjBwjE,EAAOxjE,GAAKwjE,EAAOxjE,EAAI,GAAK22F,EAC5BnzB,EAAOxjE,EAAI,GAAK8/B,EAAI42D,CAH8B,CAKpD,MACF,KAAK,IACH,IAAK,IAAI12F,EAAI,EAAGa,EAAK2iE,EAAOvlE,OAAQ+B,EAAIa,EAAIb,GAAK,EAC/CwjE,EAAOxjE,GAAKw2F,EAAMhzB,EAAOxjE,GACzBwjE,EAAOxjE,EAAI,IAAM22F,EAEnB,MACF,KAAK,IACH,IAAK,IAAI32F,EAAI,EAAGa,EAAK2iE,EAAOvlE,OAAQ+B,EAAIa,EAAIb,GAAK,EAAG,CAClD,MAAM8/B,EAAI0jC,EAAOxjE,GACjBwjE,EAAOxjE,GAAKy2F,EAAMjzB,EAAOxjE,EAAI,GAC7BwjE,EAAOxjE,EAAI,GAAKw2F,EAAM12D,CAH4B,CAKpD,MACF,QACE,MAAM,IAAIjjC,MAAM,oBAEpB,OAAO2mE,CAjC0C,UAAA0tC,EA2CnC7mD,EAAGhnB,EAAIC,EAAInsB,GACzB,MAAM0mD,EAAQ,GACR+xB,EAAUh9E,KAAKi8F,UAAY,EAC3B5nE,EAASojB,EAAIhnB,EAAKusD,EAClB1oD,EAASmjB,EAAI/mB,EAAKssD,EACxB,IAAK,MAAM2gB,KAAU39F,KAAKirD,MAAO,CAC/B,MAAMr7D,EAAS,GACTghE,EAAS,GACf,IAAK,IAAI3qD,EAAI,EAAGkzD,EAAKwkC,EAAOtyG,OAAQ4a,EAAIkzD,EAAIlzD,IAAK,CAC/C,MAAOhC,EAAOw7F,EAAUC,EAAUx7F,GAAUy5F,EAAO13F,GAC7C43F,EAAMpmD,EAAIxzC,EAAM,GAAKowB,EACrBypE,EAAMrmD,EAAIxzC,EAAM,GAAKqwB,EACrBypE,EAAMtmD,EAAIgoD,EAAS,GAAKprE,EACxB2pE,EAAMvmD,EAAIgoD,EAAS,GAAKnrE,EACxB2pE,EAAMxmD,EAAIioD,EAAS,GAAKrrE,EACxB6pE,EAAMzmD,EAAIioD,EAAS,GAAKprE,EACxB8rE,EAAM3oD,EAAIvzC,EAAO,GAAKmwB,EACtBgsE,EAAM5oD,EAAIvzC,EAAO,GAAKowB,EAElB,IAANruB,IACFrW,EAAOQ,KAAKytG,EAAKC,GACjBltC,EAAOxgE,KAAKytG,EAAKC,IAEnBluG,EAAOQ,KAAK2tG,EAAKC,EAAKC,EAAKC,EAAKkC,EAAKC,GACrCzvC,EAAOxgE,KAAK2tG,EAAKC,GACb/3F,IAAMkzD,EAAK,GACbvI,EAAOxgE,KAAKgwG,EAAKC,EAlB4B,CAqBjDp1C,EAAM76D,KAAK,CACTutG,OAAAwC,EAAA99F,KAAQs1E,EAA4B/nF,EAAQ2U,EAAMvE,KAAKiV,UACvD27C,OAAAuvC,EAAA99F,KAAQs1E,EAA4B/mB,EAAQrsD,EAAMvE,KAAKiV,WA1B1B,CA8BjC,OAAOg2C,CAnCwB,UAAAozC,IA2C/B,IAAIiC,EAAOziD,IACP0iD,GAAO,IACPC,EAAO3iD,IACP4iD,GAAO,IAEX,IAAK,MAAMt1C,KAAQnrD,KAAKirD,MACtB,IAAK,MAAOhnD,EAAOw7F,EAAUC,EAAUx7F,KAAWinD,EAAM,CACtD,MAAMqE,EAAOroD,EAAA3E,KAAKuC,qBACbd,KACAw7F,KACAC,KACAx7F,GAELo8F,EAAOjzG,KAAKkT,IAAI+/F,EAAM9wC,EAAK,IAC3BgxC,EAAOnzG,KAAKkT,IAAIigG,EAAMhxC,EAAK,IAC3B+wC,EAAOlzG,KAAKsW,IAAI48F,EAAM/wC,EAAK,IAC3BixC,EAAOpzG,KAAKsW,IAAI88F,EAAMjxC,EAAK,GAV2B,CAc1D,MAAO,CAAC8wC,EAAME,EAAMD,EAAME,EArBjB,UAAAT,IAgCT,OAAO/4F,sBAAAo0F,EAAAr7F,MACH3S,KAAKk1D,KAAKviD,KAAKi8F,UAAYj8F,KAAK8xB,aAChC,CAHQ,UAAAirE,IAWmB,IAAnB2D,EAAAt1G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACZ,GAAI4U,KAAKswB,UACP,OAGF,IAAIrpB,sBAAAo0F,EAACr7F,MAEH,YADA6W,kBAAA+kF,EAAA57F,KAAAu9F,GAAAl7F,KAAArC,MAIF,MAAMwvD,EAAA34C,kBAAA+kF,EAAO57F,KAAAq+F,GAAAh8F,KAAArC,MACPg9E,EAAAnmE,kBAAA+kF,EAAU57F,KAAAggG,GAAA39F,KAAArC,MAChB8G,sBAAAi0F,EAAA/6F,KAAkB3S,KAAKsW,IAAI6kB,EAAAa,iBAAiBqN,SAAU84B,EAAK,GAAKA,EAAK,KACrE1oD,sBAAAg0F,EAAA96F,KAAmB3S,KAAKsW,IAAI6kB,EAAAa,iBAAiBqN,SAAU84B,EAAK,GAAKA,EAAK,KAEtE,MAAMjrC,EAAQl3B,KAAKk1D,KAAKy6B,EAAU/1E,sBAAA8zF,EAAA/6F,MAAkBA,KAAKwyE,aACnDhuD,EAASn3B,KAAKk1D,KAAKy6B,EAAU/1E,sBAAA6zF,EAAA96F,MAAmBA,KAAKwyE,cAEpDthD,EAAaC,GAAgBnxB,KAAKitB,iBACzCjtB,KAAKukB,MAAQA,EAAQ2M,EACrBlxB,KAAKwkB,OAASA,EAAS2M,EAEvBnxB,KAAKw2B,eAAejS,EAAOC,GAE3B,MAAMm8E,EAAmB3gG,KAAKq8F,aACxBuE,EAAmB5gG,KAAKs8F,aAE9Bt8F,KAAKq8F,cAAgB7sC,EAAK,GAC1BxvD,KAAKs8F,cAAgB9sC,EAAK,GAC1B34C,kBAAA+kF,EAAA57F,KAAA88F,GAAAz6F,KAAArC,MACA6W,kBAAA+kF,EAAA57F,KAAAu9F,GAAAl7F,KAAArC,MAEA8G,sBAAA20F,EAAAz7F,KAAkBukB,GAClBzd,sBAAA40F,EAAA17F,KAAmBwkB,GAEnBxkB,KAAKmyB,QAAQ5N,EAAOC,GACpB,MAAMq8E,EAAkBH,EAAY1jB,EAAUh9E,KAAKwyE,YAAc,EAAI,EACrExyE,KAAK4wB,UACH+vE,EAAmB3gG,KAAKq8F,aAAewE,EACvCD,EAAmB5gG,KAAKs8F,aAAeuE,EAvCV,CAzgCMC,EAAnCnpB,EAygC6B5rD,gBAzgC7B4rD,EAAN,gBA6ByB,MAAvB5rD,gBA7BI4rD,EAAN,kBA+B2B,GAAzB5rD,gBA/BI4rD,EAAN,oBAiC6B,GAA3B5rD,gBAjCI4rD,EAAN,QAmCiB,OA/DjB3xF,EAAA2xF,UAAAA,yFCeA,IAAAxwE,EAAAC,EAAA,GACAohB,EAAAphB,EAAA,GACAE,EAAAF,EAAA,GACA6yE,EAAA7yE,EAAA,IAAA25F,EAAA,IAAAz6F,QAAA06F,EAAA,IAAA16F,QAAA26F,EAAA,IAAA36F,QAAA46F,EAAA,IAAA56F,QAAA66F,EAAA,IAAA76F,QAAA86F,EAAA,IAAA96F,QAAA+6F,EAAA,IAAA/6F,QAAAg7F,EAAA,IAAAh7F,QAAAi7F,EAAA,IAAAj7F,QAAAk7F,EAAA,IAAAl7F,QAAAm7F,EAAA,IAAA5tF,QAKA,MAAM+jE,UAAoBpvD,EAAAa,iBAuBxBppB,WAAAA,CAAYoN,GACV1M,MAAM,IAAK0M,EAAQ7mB,KAAM,gBAAzBytB,4BAAA,KAAAwtF,GAAAj7F,2BAAA,KAAAu6F,EAvBQ,MAAVv6F,2BAAA,KAAAw6F,EAEY,MAAZx6F,2BAAA,KAAAy6F,EAEiB,MAAjBz6F,2BAAA,KAAA06F,EAEa,MAAb16F,2BAAA,KAAA26F,EAEc,MAAd36F,2BAAA,KAAA46F,EAEU,MAAV56F,2BAAA,KAAA66F,EAEY,MAAZ76F,2BAAA,KAAA86F,EAEmB,MAAnB96F,2BAAA,KAAA+6F,GAES,GAAT/6F,2BAAA,KAAAg7F,GAE2B,GAMzB16F,sBAAAo6F,EAAAlhG,KAAkBqN,EAAOq0F,WACzB56F,sBAAAq6F,EAAAnhG,KAAmBqN,EAAOs0F,WAHR,CAOpB,iBAAO1zE,CAAWC,GAChB1F,EAAAa,iBAAiB4E,WAAWC,EADN,CAIxB,yBAAW0zE,GAcT,OAAO,EAAAz6F,EAAA3H,QACLQ,KACA,iBAbY,CACZ,OACA,OACA,MACA,MACA,OACA,MACA,UACA,OACA,UAKMpR,KAAIlI,GAAA,SAAAiF,OAAiBjF,KAjBH,CAqB5B,4BAAWm7G,GACT,OAAO,EAAA16F,EAAA3H,QAAOQ,KAAM,oBAAqBA,KAAK4hG,eAAeh1G,KAAK,KADrC,CAK/B,+BAAOiiC,CAAyBC,GAC9B,OAAO9uB,KAAK4hG,eAAe7/F,SAAS+sB,EADA,CAKtC,YAAOC,CAAMC,EAAMtE,GACjBA,EAAO2uD,YAAYlyE,EAAAlV,qBAAqBG,MAAO,CAC7CuvG,WAAY3yE,EAAK8yE,aAFM,CA8F3B14E,MAAAA,GACsB,IAAA24E,EAAAC,EAApB/6F,sBAAA+5F,EAAIhhG,QACF8G,sBAAAi6F,EAAA/gG,KAAe,MACfA,KAAKisB,WAAW2d,aAAa5M,SAA7B/1B,sBAAA+5F,EAAsChhG,OACtC,QAAA+hG,EAAA96F,sBAAAm6F,EAAAphG,aAAA,IAAA+hG,GAAAA,EAAc34E,SACdtiB,sBAAAs6F,EAAAphG,KAAe,MACf,QAAAgiG,EAAA/6F,sBAAAo6F,EAAArhG,aAAA,IAAAgiG,GAAAA,EAAgBhF,aAChBl2F,sBAAAu6F,EAAArhG,KAAiB,OAEnBW,MAAMyoB,QATC,CAaT0L,OAAAA,GACO90B,KAAK0qB,QAQV/pB,MAAMm0B,UACW,OAAb90B,KAAKgsB,MAIT/kB,sBAAA+5F,EAAIhhG,OACF6W,kBAAA4qF,EAAAzhG,KAAAiiG,GAAA5/F,KAAArC,MAGGA,KAAKotB,iBAGRptB,KAAK0qB,OAAO/R,IAAI3Y,QAjBhBiH,sBAAA+5F,EAAIhhG,OACF6W,kBAAA4qF,EAAAzhG,KAAAiiG,GAAA5/F,KAAArC,KALI,CA0BVw0B,SAAAA,GACEx0B,KAAKyrB,cAAe,EACpBzrB,KAAKgsB,IAAI+J,OAFC,CAMZzF,OAAAA,GACE,QACErpB,sBAAAg6F,EAAAjhG,OAAAiH,sBAAA85F,EACA/gG,OADAiH,sBAAAi6F,EAEAlhG,OAFAiH,sBAAAk6F,EAGAnhG,MALM,CAUV,eAAIo1B,GACF,OAAO,CADS,CAKlBpf,MAAAA,GACE,GAAIhW,KAAKgsB,IACP,OAAOhsB,KAAKgsB,IAGd,IAAIqwD,EAAOC,EAeX,GAdIt8E,KAAKukB,QACP83D,EAAQr8E,KAAKktB,EACbovD,EAAQt8E,KAAKmtB,GAGfxsB,MAAMqV,SACNhW,KAAKgsB,IAAIkK,QAAS,EAElBjvB,sBAAA85F,EAAI/gG,MACF6W,kBAAA4qF,EAAAzhG,KAAAkiG,GAAA7/F,KAAArC,MAEA6W,kBAAA4qF,EAAAzhG,KAAAiiG,GAAA5/F,KAAArC,MAGEA,KAAKukB,MAAO,CAEd,MAAO2M,EAAaC,GAAgBnxB,KAAKitB,iBACzCjtB,KAAKwwB,MACH6rD,EAAQnrD,EACRorD,EAAQnrD,EACRnxB,KAAKukB,MAAQ2M,EACblxB,KAAKwkB,OAAS2M,EAPF,CAWhB,OAAOnxB,KAAKgsB,GA/BL,CA6PT,kBAAOiJ,CAAYpuB,EAAM6jB,EAAQwB,GAC/B,GAAIrlB,aAAgBozE,EAAA2F,uBAClB,OAAO,KAET,MAAMhyD,EAASjtB,MAAMs0B,YAAYpuB,EAAM6jB,EAAQwB,IACzC,KAAE3nB,EAAF,UAAQm9F,EAAR,SAAmBS,EAAnB,MAA6BrlE,EAA7B,kBAAoCslE,GAAsBv7F,EAC5Ds7F,GAAYj2E,EAAU0d,aAAa3M,UAAUklE,GAC/Cr7F,sBAAAk6F,EAAApzE,EAAmBu0E,GAEnBr7F,sBAAAo6F,EAAAtzE,EAAoB8zE,GAEtB56F,sBAAAy6F,EAAA3zE,EAAgBkP,GAEhB,MAAO5L,EAAaC,GAAgBvD,EAAOb,eAQ3C,OAPAa,EAAOrJ,OAAShgB,EAAK,GAAKA,EAAK,IAAM2sB,EACrCtD,EAAOpJ,QAAUjgB,EAAK,GAAKA,EAAK,IAAM4sB,EAElCixE,IACFx0E,EAAO0F,YAAc8uE,GAGhBx0E,CArBmC,CAyB5CxD,SAAAA,GAAgD,IAAtC2yD,EAAA3xF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAsB6+B,EAAA7+B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAU,KACxC,GAAI4U,KAAKswB,UACP,OAAO,KAGT,MAAMnG,EAAa,CACjBsvD,eAAgBtyE,EAAAlV,qBAAqBG,MACrC+vG,SAAAl7F,sBAAA+5F,EAAUhhG,MACV+T,UAAW/T,KAAK+T,UAChBxP,KAAMvE,KAAKo0B,QAAQ,EAAG,GACtBnf,SAAUjV,KAAKiV,SACf6nB,MAAA71B,sBAAAs6F,EAAOvhG,MACPi9E,mBAAoBj9E,KAAKusB,qBAG3B,GAAIwwD,EAMF,OAFA5yD,EAAWu3E,UAAX7qF,kBAAA4qF,EAAuBzhG,KAAAqiG,GAAAhgG,KAAArC,MAAoC,GAC3DmqB,EAAWi4E,kBAAoBpiG,KAAKszB,YAC7BnJ,EAGT,MAAM,WAAEoJ,EAAF,QAAcZ,GAAY3yB,KAAKszB,YAKrC,IAJKC,GAAcZ,IACjBxI,EAAWi4E,kBAAoB,CAAE17G,KAAM,SAAU6hG,IAAK51D,IAGxC,OAAZ1I,EACF,OAAOE,EAGTF,EAAQq4E,SAARr4E,EAAQq4E,OAAW,IAAIj0G,KACvB,MAAMk0G,EAAOt7F,sBAAAs6F,EAAAvhG,OACRmqB,EAAW5lB,KAAK,GAAK4lB,EAAW5lB,KAAK,KACrC4lB,EAAW5lB,KAAK,GAAK4lB,EAAW5lB,KAAK,IACtC,KACJ,GAAK0lB,EAAQq4E,OAAOhkF,IAAfrX,sBAAA+5F,EAAmBhhG,QAKjB,GAAAiH,sBAAAs6F,EAAIvhG,MAAa,CAGtB,MAAMwiG,EAAWv4E,EAAQq4E,OAAO3zG,IAAfsY,sBAAA+5F,EAAmBhhG,OAChCuiG,EAAOC,EAASD,OAClBC,EAASD,KAAOA,EAChBC,EAASr4E,WAAW7F,OAAOtC,QAC3BwgF,EAASr4E,WAAW7F,OAApBzN,kBAAA4qF,EAA6BzhG,KAAAqiG,GAAAhgG,KAAArC,MAAoC,GAP7C,OAFtBiqB,EAAQq4E,OAAOrrF,IAAfhQ,sBAAA+5F,EAAmBhhG,MAAgB,CAAEuiG,OAAMp4E,eAC3CA,EAAW7F,OAAXzN,kBAAA4qF,EAAoBzhG,KAAAqiG,GAAAhgG,KAAArC,MAAoC,GAW1D,OAAOmqB,CArDuC,EAjflD,SAAAs4E,EAuEoB57F,GAAsB,IAAhB67F,EAAAt3G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACjByb,GAILC,sBAAAi6F,EAAA/gG,KAAe6G,EAAKyd,QACfo+E,IACH57F,sBAAAk6F,EAAAhhG,KAAiB6G,EAAKoL,IACtBnL,sBAAAy6F,EAAAvhG,KAAc6G,EAAKi2B,QAErBjmB,kBAAA4qF,EAAAzhG,KAAAkiG,GAAA7/F,KAAArC,OAREA,KAAKopB,QAF+B,UAAAu5E,IActC77F,sBAAAm6F,EAAAjhG,KAAsB,MACtBA,KAAKisB,WAAWqc,eAAc,GAC9BrhC,sBAAAm6F,EAAIphG,OACFA,KAAKgsB,IAAI+J,OAJI,UAAAksE,IASf,GAAAh7F,sBAAA+5F,EAAIhhG,MAMF,OALAA,KAAKisB,WAAWqc,eAAc,QAC9BtoC,KAAKisB,WAAW2d,aACbjN,UADH11B,sBAAA+5F,EACahhG,OACV+M,MAAKlG,GAAAgQ,kBAAA4qF,EAAQzhG,KAAAyiG,GAAApgG,KAAArC,KAAuB6G,GAAqB,KACzDqd,SAAQ,IAAArN,kBAAA4qF,EAAMzhG,KAAA2iG,GAAAtgG,KAAArC,QAInB,GAAAiH,sBAAAi6F,EAAIlhG,MAAiB,CACnB,MAAM9U,EAAA+b,sBAAAi6F,EAAMlhG,MAOZ,OANA8G,sBAAAo6F,EAAAlhG,KAAkB,MAClBA,KAAKisB,WAAWqc,eAAc,QAC9BxhC,sBAAAm6F,EAAAjhG,KAAsBA,KAAKisB,WAAW2d,aACnClN,WAAWxxC,GACX6hB,MAAKlG,GAAAgQ,kBAAA4qF,EAAQzhG,KAAAyiG,GAAApgG,KAAArC,KAAuB6G,KACpCqd,SAAQ,IAAArN,kBAAA4qF,EAAMzhG,KAAA2iG,GAAAtgG,KAAArC,QAPE,CAWrB,GAAAiH,sBAAAk6F,EAAInhG,MAAkB,CACpB,MAAM/Z,EAAAghB,sBAAAk6F,EAAOnhG,MAOb,OANA8G,sBAAAq6F,EAAAnhG,KAAmB,MACnBA,KAAKisB,WAAWqc,eAAc,QAC9BxhC,sBAAAm6F,EAAAjhG,KAAsBA,KAAKisB,WAAW2d,aACnCrN,YAAYt2C,GACZ8mB,MAAKlG,GAAAgQ,kBAAA4qF,EAAQzhG,KAAAyiG,GAAApgG,KAAArC,KAAuB6G,KACpCqd,SAAQ,IAAArN,kBAAA4qF,EAAMzhG,KAAA2iG,GAAAtgG,KAAArC,QAPG,CAWtB,MAAM8yC,EAAQ9qD,SAASG,cAAc,SAMrC2qD,EAAMpsD,KAAO,OACbosD,EAAM8vD,OAAShrB,EAAYiqB,kBAC3B/6F,sBAAAm6F,EAAAjhG,KAAsB,IAAI0G,SAAQC,IAChCmsC,EAAM9pD,iBAAiB,UAAUulB,UAC/B,GAAKukC,EAAM+vD,OAAgC,IAAvB/vD,EAAM+vD,MAAMx3G,OAEzB,CACL2U,KAAKisB,WAAWqc,eAAc,GAC9B,MAAMzhC,QAAa7G,KAAKisB,WAAW2d,aAAarN,YAC9CuW,EAAM+vD,MAAM,IAEdhsF,kBAAA4qF,EAAAzhG,KAAAyiG,GAAApgG,KAAArC,KAAuB6G,EALlB,MADL7G,KAAKopB,SAWPziB,GAAA,IAEFmsC,EAAM9pD,iBAAiB,UAAU,KAC/BgX,KAAKopB,SACLziB,GAAA,GAFF,IAICud,SAAQ,IAAArN,kBAAA4qF,EAAMzhG,KAAA2iG,GAAAtgG,KAAArC,SAEf8yC,EAAMgwD,OA9DG,UAAAZ,IAkKX,MAAM,IAAEl2E,GAAQhsB,KAChB,IAAI,MAAEukB,EAAF,OAASC,GAATvd,sBAAA85F,EAAoB/gG,MACxB,MAAOysB,EAAWC,GAAc1sB,KAAK+sB,eAC/Bg2E,EAAY,IAClB,GAAI/iG,KAAKukB,MACPA,EAAQvkB,KAAKukB,MAAQkI,EACrBjI,EAASxkB,KAAKwkB,OAASkI,OAClB,GACLnI,EAAQw+E,EAAYt2E,GACpBjI,EAASu+E,EAAYr2E,EACrB,CAGA,MAAMs2E,EAAS31G,KAAKkT,IACjBwiG,EAAYt2E,EAAalI,EACzBw+E,EAAYr2E,EAAclI,GAE7BD,GAASy+E,EACTx+E,GAAUw+E,CARV,CAUF,MAAO9xE,EAAaC,GAAgBnxB,KAAKitB,iBACzCjtB,KAAKmyB,QACF5N,EAAQ2M,EAAezE,EACvBjI,EAAS2M,EAAgBzE,GAG5B1sB,KAAKisB,WAAWqc,eAAc,GAC9B,MAAMjiB,EAAAvf,sBAAAs6F,EAAUphG,KAAehY,SAASG,cAAc,WACtD6jC,EAAImH,OAAO9M,GACX2F,EAAIkK,QAAS,EACbrf,kBAAA4qF,EAAAzhG,KAAAijG,GAAA5gG,KAAArC,KAAiBukB,EAAOC,GACxB3N,kBAAA4qF,EAAAzhG,KAAAkjG,GAAA7gG,KAAArC,MACIiH,sBAAAu6F,EAACxhG,QACHA,KAAK0qB,OAAO0uD,kBAAkBp5E,MAC9B8G,sBAAA06F,EAAAxhG,MAAgC,IAMlCA,KAAKisB,WAAWgO,UAAUC,SAAS,kBAAmB,CACpD1rB,OAAQxO,KACRa,QAAS,CACPna,KAAM,UACNyzC,QAASn6B,KAAKstB,WACdzmB,KAAM,CACJuzB,OAAQ,qBAIdp6B,KAAK0yB,kBAnDS,UAAAywE,EA6DD5+E,EAAOC,GAAQ,IAAA4+E,EAC5B,MAAOlyE,EAAaC,GAAgBnxB,KAAKitB,iBACzCjtB,KAAKukB,MAAQA,EAAQ2M,EACrBlxB,KAAKwkB,OAASA,EAAS2M,EACvBnxB,KAAKmyB,QAAQ5N,EAAOC,GAChB,QAAJ4+E,EAAIpjG,KAAKqsB,uBAAL,IAAA+2E,GAAAA,EAAsB92E,WACxBtsB,KAAKqvB,SAELrvB,KAAKuvB,oBAEPvvB,KAAKqsB,gBAAkB,KACO,OAA1BplB,sBAAAq6F,EAAAthG,OACFmX,aAAAlQ,sBAAAq6F,EAAathG,OAOf8G,sBAAAw6F,EAAAthG,KAAwBkc,YAAW,KACjCpV,sBAAAw6F,EAAAthG,KAAwB,MACxB6W,kBAAA4qF,EAAAzhG,KAAAijG,GAAA5gG,KAAArC,KAAiBukB,EAAOC,EAAxB,GAHmB,KAlBO,UAAA6+E,EAyBjB9+E,EAAOC,GAClB,MAAQD,MAAO++E,EAAa9+E,OAAQ++E,GAA9Bt8F,sBAAA85F,EAA+C/gG,MAErD,IAAIg4B,EAAWsrE,EACXrrE,EAAYsrE,EACZj/E,EAAArd,sBAAA85F,EAAS/gG,MACb,KAAOg4B,EAAW,EAAIzT,GAAS0T,EAAY,EAAIzT,GAAQ,CACrD,MAAMg/E,EAAYxrE,EACZyrE,EAAaxrE,EAEfD,EAAW,EAAIzT,IAIjByT,EACEA,GAAY,MACR3qC,KAAKC,MAAM0qC,EAAW,GAAK,EAC3B3qC,KAAKk1D,KAAKvqB,EAAW,IAEzBC,EAAY,EAAIzT,IAClByT,EACEA,GAAa,MACT5qC,KAAKC,MAAM2qC,EAAY,GAAK,EAC5B5qC,KAAKk1D,KAAKtqB,EAAY,IAG9B,MAAMyrE,EAAY,IAAI/hG,gBAAgBq2B,EAAUC,GACpCyrE,EAAUxnE,WAAW,MAC7BG,UACF/X,EACA,EACA,EACAk/E,EACAC,EACA,EACA,EACAzrE,EACAC,GAEF3T,EAASo/E,EAAUC,uBAjCkC,CAoCvD,OAAOr/E,CA1CmB,UAAA2+E,EA6ChB1+E,EAAOC,GACjBD,EAAQl3B,KAAKk1D,KAAKh+B,GAClBC,EAASn3B,KAAKk1D,KAAK/9B,GACnB,MAAM6B,EAAApf,sBAAAm6F,EAASphG,MACf,IAAKqmB,GAAWA,EAAO9B,QAAUA,GAAS8B,EAAO7B,SAAWA,EAC1D,OAEF6B,EAAO9B,MAAQA,EACf8B,EAAO7B,OAASA,EAChB,MAAMF,EAASrd,sBAAAs6F,EAAAvhG,MAAAiH,sBAAA85F,EACX/gG,MAAA6W,kBAAA4qF,EACAzhG,KAAAqjG,GAAAhhG,KAAArC,KAAkBukB,EAAOC,GACvByX,EAAM5V,EAAO6V,WAAW,MAC9BD,EAAIqR,OAASttC,KAAKisB,WAAW+Y,UAC7B/I,EAAII,UACF/X,EACA,EACA,EACAA,EAAOC,MACPD,EAAOE,OACP,EACA,EACAD,EACAC,EAvBuB,UAAA69E,EA2BVuB,GACf,GAAIA,EAAO,CACT,GAAA38F,sBAAAs6F,EAAIvhG,MAAa,CACf,MAAM9U,EAAM8U,KAAKisB,WAAW2d,aAAa/M,UAA7B51B,sBAAA+5F,EAAuChhG,OACnD,GAAI9U,EACF,OAAOA,CAHM,CAQjB,MAAMm7B,EAASr+B,SAASG,cAAc,UAKtC,QAJGo8B,MAAO8B,EAAO9B,MAAOC,OAAQ6B,EAAO7B,QAAtCvd,sBAAA85F,EAAiD/gG,OACtCqmB,EAAO6V,WAAW,MAC1BG,UAAJp1B,sBAAA85F,EAAc/gG,MAAc,EAAG,GAExBqmB,EAAOw9E,WAdL,CAiBX,GAAA58F,sBAAAs6F,EAAIvhG,MAAa,CACf,MAAOysB,EAAWC,GAAc1sB,KAAK+sB,eAG/BxI,EAAQl3B,KAAK6kC,MACjBlyB,KAAKukB,MAAQkI,EAAYnlB,EAAAo9B,cAAcC,kBAEnCngB,EAASn3B,KAAK6kC,MAClBlyB,KAAKwkB,OAASkI,EAAaplB,EAAAo9B,cAAcC,kBAErC++D,EAAY,IAAI/hG,gBAAgB4iB,EAAOC,GAa7C,OAZYk/E,EAAUxnE,WAAW,MAC7BG,UAAJp1B,sBAAA85F,EACE/gG,MACA,EACA,EACAiH,sBAAA85F,EAAA/gG,MAAaukB,MACbtd,sBAAA85F,EAAA/gG,MAAawkB,OACb,EACA,EACAD,EACAC,GAEKk/E,EAAUC,uBAvBF,CA0BjB,OAAO9mF,gBAAA5V,sBAAA85F,EAAgB/gG,MA5CD,UAAAkjG,IAmDtBp8F,sBAAAu6F,EAAArhG,KAAiB,IAAI6/F,gBAAep2E,IAClC,MAAMllB,EAAOklB,EAAQ,GAAGq2E,YACpBv7F,EAAKggB,OAAShgB,EAAKigB,QACrB3N,kBAAA4qF,EAAAzhG,KAAAmjG,GAAA9gG,KAAArC,KAAoBuE,EAAKggB,MAAOhgB,EAAKigB,OADR,KAIjCvd,sBAAAo6F,EAAArhG,MAAe+/F,QAAQ//F,KAAKgsB,IAPZ,CA7cuB83E,EAArClsB,EA6cc7rD,gBA7cd6rD,EAAN,QAqBiB,SA5CjB5xF,EAAA4xF,YAAAA,ICCAmsB,yBAAA,GAGA,SAAA38F,oBAAA48F,GAEA,IAAAC,EAAAF,yBAAAC,GACA,QAAA14G,IAAA24G,EACA,OAAAA,EAAAj+G,QAGA,IAAAsB,EAAAy8G,yBAAAC,GAAA,CAGAh+G,QAAA,IAOA,OAHAk+G,oBAAAF,GAAA18G,EAAAA,EAAAtB,QAAAohB,qBAGA9f,EAAAtB,OACA,66ICIA,IAAAmhB,EAAAC,oBAAA,GAqBA+8F,EAAA/8F,oBAAA,GAQAE,EAAAF,oBAAA,GAcAg9F,EAAAh9F,oBAAA,IACAi9F,EAAAj9F,oBAAA,IACAwjB,EAAAxjB,oBAAA,GACA6yE,EAAA7yE,oBAAA,IACAM,EAAAN,oBAAA,IACA22E,EAAA32E,oBAAA,oCpChEA,GARA9f,OAAAtB,QAAA4E,KAAA05G,SAAAz5G,wCqCAA,SAAS05G,EAAQ11G,GAAkC,OAAO01G,EAAU,mBAAqBvnC,QAAU,iBAAmBA,OAAOwnC,SAAW,SAAU31G,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBmuE,QAAUnuE,EAAIoR,cAAgB+8D,QAAUnuE,IAAQmuE,OAAO98D,UAAY,gBAAkBrR,CAAK,EAAG01G,EAAQ11G,EAAM,CAE/UC,OAAO6Q,eAAe3Z,EAAS,aAAc,CAC3CiJ,OAAO,IAETjJ,EAAQy+G,qBAAkB,EAE1B,IAAIC,EAASC,EAAuBv9G,EAAQ,QAExCw9G,EAAmBD,EAAuBv9G,EAAQ,QAElDy9G,EAAY,CAAC,OAAQ,SAAU,UAAW,YAE9C,SAASF,EAAuB91G,GAAO,OAAOA,GAAOA,EAAIi2G,WAAaj2G,EAAM,CAAE,QAAWA,EAAO,CAEhG,SAASk2G,EAAQC,EAAQC,GAAkB,IAAI/1G,EAAOJ,OAAOI,KAAK81G,GAAS,GAAIl2G,OAAOo2G,sBAAuB,CAAE,IAAIC,EAAUr2G,OAAOo2G,sBAAsBF,GAASC,IAAmBE,EAAUA,EAAQ73D,QAAO,SAAU83D,GAAO,OAAOt2G,OAAOu2G,yBAAyBL,EAAQI,GAAKxlG,UAAY,KAAK1Q,EAAKkB,KAAKiQ,MAAMnR,EAAMi2G,EAAU,CAAE,OAAOj2G,CAAM,CAEpV,SAASo2G,EAAcr1E,GAAU,IAAK,IAAI7iC,EAAI,EAAGA,EAAIhC,UAAUC,OAAQ+B,IAAK,CAAE,IAAIohB,EAAS,MAAQpjB,UAAUgC,GAAKhC,UAAUgC,GAAK,CAAC,EAAGA,EAAI,EAAI23G,EAAQj2G,OAAO0f,IAAS,GAAI+2F,SAAQ,SAAUv2G,GAAO+8B,EAAgBkE,EAAQjhC,EAAKwf,EAAOxf,GAAO,IAAKF,OAAO02G,0BAA4B12G,OAAO22G,iBAAiBx1E,EAAQnhC,OAAO02G,0BAA0Bh3F,IAAWu2F,EAAQj2G,OAAO0f,IAAS+2F,SAAQ,SAAUv2G,GAAOF,OAAO6Q,eAAeswB,EAAQjhC,EAAKF,OAAOu2G,yBAAyB72F,EAAQxf,GAAO,GAAI,CAAE,OAAOihC,CAAQ,CAEzf,SAASy1E,EAAyBl3F,EAAQm3F,GAAY,GAAc,MAAVn3F,EAAgB,MAAO,CAAC,EAAG,IAAkExf,EAAK5B,EAAnE6iC,EAEzF,SAAuCzhB,EAAQm3F,GAAY,GAAc,MAAVn3F,EAAgB,MAAO,CAAC,EAAG,IAA2Dxf,EAAK5B,EAA5D6iC,EAAS,CAAC,EAAO21E,EAAa92G,OAAOI,KAAKsf,GAAqB,IAAKphB,EAAI,EAAGA,EAAIw4G,EAAWv6G,OAAQ+B,IAAO4B,EAAM42G,EAAWx4G,GAAQu4G,EAASnlC,QAAQxxE,IAAQ,IAAaihC,EAAOjhC,GAAOwf,EAAOxf,IAAQ,OAAOihC,CAAQ,CAFhN41E,CAA8Br3F,EAAQm3F,GAAuB,GAAI72G,OAAOo2G,sBAAuB,CAAE,IAAIY,EAAmBh3G,OAAOo2G,sBAAsB12F,GAAS,IAAKphB,EAAI,EAAGA,EAAI04G,EAAiBz6G,OAAQ+B,IAAO4B,EAAM82G,EAAiB14G,GAAQu4G,EAASnlC,QAAQxxE,IAAQ,GAAkBF,OAAOoR,UAAU6lG,qBAAqB1jG,KAAKmM,EAAQxf,KAAgBihC,EAAOjhC,GAAOwf,EAAOxf,GAAQ,CAAE,OAAOihC,CAAQ,CAM3e,SAAS+1E,EAAkB/1E,EAAQg2E,GAAS,IAAK,IAAI74G,EAAI,EAAGA,EAAI64G,EAAM56G,OAAQ+B,IAAK,CAAE,IAAI84G,EAAaD,EAAM74G,GAAI84G,EAAWtmG,WAAasmG,EAAWtmG,aAAc,EAAOsmG,EAAWrmG,cAAe,EAAU,UAAWqmG,IAAYA,EAAWpmG,UAAW,GAAMhR,OAAO6Q,eAAeswB,EAAQi2E,EAAWl3G,IAAKk3G,EAAa,CAAE,CAM5T,SAASC,EAAgBC,EAAGjjG,GAA+G,OAA1GgjG,EAAkBr3G,OAAOu3G,gBAAkB,SAAyBD,EAAGjjG,GAAsB,OAAjBijG,EAAEE,UAAYnjG,EAAUijG,CAAG,EAAUD,EAAgBC,EAAGjjG,EAAI,CAEzK,SAASojG,EAAaC,GAAW,IAAIC,EAMrC,WAAuC,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFC,QAAQ5mG,UAAU6mG,QAAQ1kG,KAAKqkG,QAAQC,UAAUG,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO79G,GAAK,OAAO,CAAO,CAAE,CANvQ+9G,GAA6B,OAAO,WAAkC,IAAsChpE,EAAlCipE,EAAQC,EAAgBV,GAAkB,GAAIC,EAA2B,CAAE,IAAIU,EAAYD,EAAgBlnG,MAAMC,YAAa+9B,EAAS0oE,QAAQC,UAAUM,EAAO77G,UAAW+7G,EAAY,MAASnpE,EAASipE,EAAM5mG,MAAML,KAAM5U,WAAc,OAEpX,SAAoCs0C,EAAMr9B,GAAQ,GAAIA,IAA2B,WAAlBkiG,EAAQliG,IAAsC,oBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAI+kG,UAAU,4DAA+D,OAAOC,EAAuB3nE,EAAO,CAF4F4nE,CAA2BtnG,KAAMg+B,EAAS,CAAG,CAIxa,SAASqpE,EAAuB3nE,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI6nE,eAAe,6DAAgE,OAAO7nE,CAAM,CAIrK,SAASwnE,EAAgBd,GAAwJ,OAAnJc,EAAkBp4G,OAAOu3G,eAAiBv3G,OAAOy+B,eAAiB,SAAyB64E,GAAK,OAAOA,EAAEE,WAAax3G,OAAOy+B,eAAe64E,EAAI,EAAUc,EAAgBd,EAAI,CAE5M,SAASr6E,EAAgBl9B,EAAKG,EAAKC,GAAiK,OAApJD,KAAOH,EAAOC,OAAO6Q,eAAe9Q,EAAKG,EAAK,CAAEC,MAAOA,EAAO2Q,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBjR,EAAIG,GAAOC,EAAgBJ,CAAK,CAEhN,IAAI41G,EAA+B,SAAU+C,IAhB7C,SAAmBC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIN,UAAU,sDAAyDK,EAASvnG,UAAYpR,OAAOC,OAAO24G,GAAcA,EAAWxnG,UAAW,CAAED,YAAa,CAAEhR,MAAOw4G,EAAU3nG,UAAU,EAAMD,cAAc,KAAW/Q,OAAO6Q,eAAe8nG,EAAU,YAAa,CAAE3nG,UAAU,IAAc4nG,GAAYvB,EAAgBsB,EAAUC,EAAa,CAiBjcC,CAAUlD,EAAiB+C,GAE3B,IArBoBI,EAAaC,EAAYC,EAqBzCC,EAASxB,EAAa9B,GAE1B,SAASA,IACP,IAAIr1D,GA5BR,SAAyB44D,EAAUJ,GAAe,KAAMI,aAAoBJ,GAAgB,MAAM,IAAIR,UAAU,oCAAwC,CA8BpJa,CAAgBjoG,KAAMykG,GAEtB,IAAK,IAAIyD,EAAO98G,UAAUC,OAAQw0C,EAAO,IAAIz5C,MAAM8hH,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EtoE,EAAKsoE,GAAQ/8G,UAAU+8G,GA0BzB,OArBAp8E,EAAgBs7E,EAFhBj4D,EAAQ24D,EAAO1lG,KAAKhC,MAAM0nG,EAAQ,CAAC/nG,MAAMrU,OAAOk0C,KAED,WAAW,SAAUjjB,GAClE,IAAIwrF,EAAch5D,EAAM62D,MACpB1+G,EAAO6gH,EAAY7gH,KACnBoC,EAASy+G,EAAYz+G,OACrBosB,EAAWqyF,EAAYryF,SACvBvuB,EAAU4gH,EAAY5gH,QAEtBupE,EAAO2zC,EAAgB,QAAE2D,SAASC,KAAKvyF,GAEvCioB,GAAS,EAAI4mE,EAA0B,SAAGr9G,EAAMC,GAEhDmC,GACFA,EAAOpC,EAAMy2C,GAIX+yB,GAAQA,EAAKk1C,OAAuC,oBAAvBl1C,EAAKk1C,MAAMsC,SAC1Cx3C,EAAKk1C,MAAMsC,QAAQ3rF,EAEvB,IAEOwyB,CACT,CAoBA,OA5EoBw4D,EA0DPnD,GA1DoBoD,EA0DH,CAAC,CAC7B74G,IAAK,SACLC,MAAO,WACL,IAAIu5G,EAAexoG,KAAKimG,MAIpBlwF,GAHQyyF,EAAajhH,KACXihH,EAAa7+G,OACZ6+G,EAAahhH,QACbghH,EAAazyF,UACxBkwF,EAAQP,EAAyB8C,EAAc3D,GAE/C9zC,EAAO2zC,EAAgB,QAAE2D,SAASC,KAAKvyF,GAE3C,OAAoB2uF,EAAgB,QAAE+D,aAAa13C,EAAMu0C,EAAcA,EAAc,CAAC,EAAGW,GAAQ,CAAC,EAAG,CACnGsC,QAASvoG,KAAKuoG,UAElB,MAzE0EvC,EAAkB4B,EAAY1nG,UAAW2nG,GAAiBC,GAAa9B,EAAkB4B,EAAaE,GAAch5G,OAAO6Q,eAAeioG,EAAa,YAAa,CAAE9nG,UAAU,IA4ErP2kG,CACT,CA3DmC,CA2DjCC,EAAgB,QAAEgE,eAEpB1iH,EAAQy+G,gBAAkBA,EAE1B14E,EAAgB04E,EAAiB,eAAgB,CAC/C96G,YAAQ2B,EACR9D,aAAS8D,kCC9GX,IACIm5G,EADWr9G,EAAQ,OACQq9G,gBAE/BA,EAAgBA,gBAAkBA,EAClCn9G,EAAOtB,QAAUy+G,sFC4GV,SAASkE,EAAUC,EAASC,EAAYC,EAAGC,GAEhD,OAAO,IAAKD,IAAMA,EAAIpiG,WAAU,SAAUC,EAASC,GAC/C,SAASoiG,EAAU/5G,GAAS,IAAM8/C,EAAKg6D,EAAUjqE,KAAK7vC,GAAS,CAAE,MAAOhG,GAAK2d,EAAO3d,EAAI,CAAE,CAC1F,SAASggH,EAASh6G,GAAS,IAAM8/C,EAAKg6D,EAAiB,MAAE95G,GAAS,CAAE,MAAOhG,GAAK2d,EAAO3d,EAAI,CAAE,CAC7F,SAAS8lD,EAAK/Q,GAJlB,IAAe/uC,EAIa+uC,EAAOvjB,KAAO9T,EAAQq3B,EAAO/uC,QAJ1CA,EAIyD+uC,EAAO/uC,MAJhDA,aAAiB65G,EAAI75G,EAAQ,IAAI65G,GAAE,SAAUniG,GAAWA,EAAQ1X,EAAQ,KAIjB8d,KAAKi8F,EAAWC,EAAW,CAC7Gl6D,GAAMg6D,EAAYA,EAAU1oG,MAAMuoG,EAASC,GAAc,KAAK/pE,OAClE,GACF,CAEO,SAASoqE,EAAYN,EAASh/G,GACnC,IAAsGqgD,EAAG9c,EAAGznB,EAAG/C,EAA3GpU,EAAI,CAAE46G,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP1jG,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG2jG,KAAM,GAAI9+C,IAAK,IAChG,OAAO5nD,EAAI,CAAEm8B,KAAMwqE,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXtsC,SAA0Br6D,EAAEq6D,OAAOwnC,UAAY,WAAa,OAAOxkG,IAAM,GAAI2C,EACvJ,SAAS2mG,EAAK/mG,GAAK,OAAO,SAAU1U,GAAK,OACzC,SAAcklE,GACV,GAAI9oB,EAAG,MAAM,IAAIm9D,UAAU,mCAC3B,KAAOzkG,IAAMA,EAAI,EAAGowD,EAAG,KAAOxkE,EAAI,IAAKA,OACnC,GAAI07C,EAAI,EAAG9c,IAAMznB,EAAY,EAARqtD,EAAG,GAAS5lC,EAAU,OAAI4lC,EAAG,GAAK5lC,EAAS,SAAOznB,EAAIynB,EAAU,SAAMznB,EAAErD,KAAK8qB,GAAI,GAAKA,EAAE2R,SAAWp5B,EAAIA,EAAErD,KAAK8qB,EAAG4lC,EAAG,KAAKt4C,KAAM,OAAO/U,EAE3J,OADIynB,EAAI,EAAGznB,IAAGqtD,EAAK,CAAS,EAARA,EAAG,GAAQrtD,EAAEzW,QACzB8jE,EAAG,IACP,KAAK,EAAG,KAAK,EAAGrtD,EAAIqtD,EAAI,MACxB,KAAK,EAAc,OAAXxkE,EAAE46G,QAAgB,CAAEl6G,MAAO8jE,EAAG,GAAIt4C,MAAM,GAChD,KAAK,EAAGlsB,EAAE46G,QAASh8E,EAAI4lC,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKxkE,EAAEg8D,IAAID,MAAO/7D,EAAE86G,KAAK/+C,MAAO,SACxC,QACI,KAAkB5kD,GAAZA,EAAInX,EAAE86G,MAAYh+G,OAAS,GAAKqa,EAAEA,EAAEra,OAAS,MAAkB,IAAV0nE,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAExkE,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVwkE,EAAG,MAAcrtD,GAAMqtD,EAAG,GAAKrtD,EAAE,IAAMqtD,EAAG,GAAKrtD,EAAE,IAAM,CAAEnX,EAAE46G,MAAQp2C,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYxkE,EAAE46G,MAAQzjG,EAAE,GAAI,CAAEnX,EAAE46G,MAAQzjG,EAAE,GAAIA,EAAIqtD,EAAI,KAAO,CACpE,GAAIrtD,GAAKnX,EAAE46G,MAAQzjG,EAAE,GAAI,CAAEnX,EAAE46G,MAAQzjG,EAAE,GAAInX,EAAEg8D,IAAIn6D,KAAK2iE,GAAK,KAAO,CAC9DrtD,EAAE,IAAInX,EAAEg8D,IAAID,MAChB/7D,EAAE86G,KAAK/+C,MAAO,SAEtByI,EAAKnpE,EAAKyY,KAAKumG,EAASr6G,EAC5B,CAAE,MAAOtF,GAAK8pE,EAAK,CAAC,EAAG9pE,GAAIkkC,EAAI,CAAG,CAAE,QAAU8c,EAAIvkC,EAAI,CAAG,CACzD,GAAY,EAARqtD,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE9jE,MAAO8jE,EAAG,GAAKA,EAAG,QAAK,EAAQt4C,MAAM,EAC9E,CAtBgDs0B,CAAK,CAACxsC,EAAG1U,GAAK,CAAG,CAuBnE,CAE6BiB,OAAOC,OA4B7B,SAASw6G,EAAOnD,EAAG7jG,GACxB,IAAIa,EAAsB,oBAAX45D,QAAyBopC,EAAEppC,OAAOwnC,UACjD,IAAKphG,EAAG,OAAOgjG,EACf,IAAmB1jG,EAAYzZ,EAA3BmE,EAAIgW,EAAEf,KAAK+jG,GAAOoD,EAAK,GAC3B,IACI,WAAc,IAANjnG,GAAgBA,KAAM,MAAQG,EAAItV,EAAE0xC,QAAQrkB,MAAM+uF,EAAGp5G,KAAKsS,EAAEzT,MACxE,CACA,MAAO9E,GAASlB,EAAI,CAAEkB,MAAOA,EAAS,CAAC,QAEnC,IACQuY,IAAMA,EAAE+X,OAASrX,EAAIhW,EAAU,SAAIgW,EAAEf,KAAKjV,EAClD,CAAC,QACS,GAAInE,EAAG,MAAMA,EAAEkB,KAAO,CACpC,CACA,OAAOq/G,CACT,CAkBO,SAASC,EAAcC,EAAIp9B,EAAMq9B,GACtC,GAAIA,GAA6B,IAArBv+G,UAAUC,OAAc,IAAK,IAA4Bm+G,EAAxBp8G,EAAI,EAAGw8G,EAAIt9B,EAAKjhF,OAAY+B,EAAIw8G,EAAGx8G,KACxEo8G,GAAQp8G,KAAKk/E,IACRk9B,IAAIA,EAAKpjH,MAAM8Z,UAAUsD,MAAMnB,KAAKiqE,EAAM,EAAGl/E,IAClDo8G,EAAGp8G,GAAKk/E,EAAKl/E,IAGrB,OAAOs8G,EAAG/9G,OAAO69G,GAAMpjH,MAAM8Z,UAAUsD,MAAMnB,KAAKiqE,GACpD,CAqCyBx9E,OAAOC,OAyDkB,oBAApB86G,iBAAiCA,gBC3TxD,IAAMC,EAAoB,IAAIz7G,IAAI,CAErC,CAAC,MAAO,aACR,CAAC,MAAO,yBACR,CAAC,MAAO,yBACR,CAAC,OAAQ,cACT,CAAC,MAAO,mBACR,CAAC,MAAO,gCACR,CAAC,MAAO,4BACR,CAAC,MAAO,aACR,CAAC,KAAM,sBACP,CAAC,MAAO,uBACR,CAAC,MAAO,qBACR,CAAC,MAAO,qBACR,CAAC,MAAO,YACR,CAAC,MAAO,YACR,CAAC,MAAO,sBACR,CAAC,OAAQ,2EACT,CAAC,MAAO,iCACR,CAAC,OAAQ,wBACT,CAAC,KAAM,oBACP,CAAC,MAAO,aACR,CAAC,OAAQ,cACT,CAAC,OAAQ,cACT,CAAC,MAAO,aACR,CAAC,OAAQ,aACT,CAAC,MAAO,4BACR,CAAC,MAAO,iBACR,CAAC,MAAO,4BACR,CAAC,OAAQ,cACT,CAAC,MAAO,cACR,CAAC,KAAM,mBACP,CAAC,OAAQ,oBACT,CAAC,SAAU,uBACX,CAAC,MAAO,cACR,CAAC,OAAQ,cACT,CAAC,MAAO,mBACR,CAAC,MAAO,cACR,CAAC,MAAO,aACR,CAAC,OAAQ,cACT,CAAC,OAAQ,uCACT,CAAC,MAAO,mDACR,CAAC,MAAO,kDACR,CAAC,MAAO,2CACR,CAAC,MAAO,aACR,CAAC,MAAO,aACR,CAAC,MAAO,mBACR,CAAC,OAAQ,cACT,CAAC,MAAO,YACR,CAAC,MAAO,aACR,CAAC,MAAO,mBACR,CAAC,MAAO,2BACR,CAAC,MAAO,iCACR,CAAC,OAAQ,6EACT,CAAC,MAAO,uBACR,CAAC,MAAO,mBACR,CAAC,KAAM,oBACP,CAAC,MAAO,iBACR,CAAC,MAAO,iCACR,CAAC,MAAO,qBACR,CAAC,MAAO,cACR,CAAC,OAAQ,cACT,CAAC,KAAM,cACP,CAAC,MAAO,YACR,CAAC,MAAO,cACR,CAAC,MAAO,yBACR,CAAC,MAAO,aACR,CAAC,OAAQ,cACT,CAAC,OAAQ,cACT,CAAC,OAAQ,cACT,CAAC,OAAQ,aACT,CAAC,QAAS,cACV,CAAC,QAAS,yBACV,CAAC,MAAO,4BACR,CAAC,OAAQ,qEACT,CAAC,MAAO,mBACR,CAAC,MAAO,mCACR,CAAC,MAAO,mBACR,CAAC,KAAM,+BAGP,CAAC,MAAO,oBACR,CAAC,MAAO,mBACR,CAAC,MAAO,gCAIN,SAAU07G,EAAe9jH,EAAoBklE,GAC/C,IAAMlhB,EAyBV,SAAsBhkD,GACX,IAAAO,EAAQP,EAAIO,KAGnB,GAFqBA,IAAmC,IAA3BA,EAAK6jD,YAAY,OAEzBpkD,EAAKS,KAAM,CAC5B,IAAMsjH,EAAMxjH,EAAKF,MAAM,KAClBgkE,MAAO3jE,cACND,EAAOojH,EAAkBn7G,IAAIq7G,GAC/BtjH,GACAoI,OAAO6Q,eAAe1Z,EAAM,OAAQ,CAChCgJ,MAAOvI,EACPoZ,UAAU,EACVD,cAAc,EACdD,YAAY,IAKxB,OAAO3Z,CACX,CA5CcgkH,CAAahkH,GACvB,GAAsB,kBAAXgkD,EAAEkhB,KAAmB,CACrB,IAAA++C,EAAsBjkH,EAAIikH,mBACjCp7G,OAAO6Q,eAAesqC,EAAG,OAAQ,CAC7Bh7C,MAAuB,kBAATk8D,EACRA,EAI8B,kBAAvB++C,GAAmCA,EAAmB7+G,OAAS,EAClE6+G,EACAjkH,EAAKO,KACfsZ,UAAU,EACVD,cAAc,EACdD,YAAY,IAIpB,OAAOqqC,CACX,CCxGA,IAAMkgE,EAAkB,CAEpB,YACA,aAiCJ,SAASC,EAAYv8G,GACjB,MAAoB,kBAANA,GAAwB,OAANA,CACpC,CAEA,SAASw8G,EAAcxoF,GACnB,OAAOyoF,EAAwBzoF,EAAIoO,OAA4B4yE,OAAOj0G,KAAI,SAAA3I,GAAQ,OAAA8jH,EAAe9jH,EAAf,GACtF,CAGA,SAAeskH,EAAiBC,6FACd,SAAM9jG,QAAQne,IAAIiiH,EAAQ57G,KAAI,SAAAmqC,GAAK,OAAAA,EAAE0xE,SAAF,aACjD,MAAO,CAAP,EADcC,EAAAtB,OACDx6G,KAAI,SAAA3I,GAAQ,OAAA8jH,EAAe9jH,EAAf,YAI7B,SAAe0kH,EAAqBC,EAAkBlkH,0GAG9CkkH,EAAG9wF,OACGA,EAAQwwF,EAA2BM,EAAG9wF,OACvCwzB,QAAO,SAAAte,GAAQ,MAAc,SAAdA,EAAK6vB,IAAL,IAGP,SAATn4D,EACO,CAAP,EAAOozB,GAEG,GAAMpT,QAAQne,IAAIuxB,EAAMlrB,IAAIi8G,MAR1C,aASA,MAAO,CAAP,EAAOC,EAAeC,EADRL,EAAAtB,iBAIlB,MAAO,CAAP,EAAO0B,EAAeR,EAAuBM,EAAG/H,OAC3Cj0G,KAAI,SAAA3I,GAAQ,OAAA8jH,EAAe9jH,EAAf,aAGrB,SAAS6kH,EAAejI,GACpB,OAAOA,EAAMv1D,QAAO,SAAArnD,GAAQ,OAAwC,IAAxCkkH,EAAgB3pC,QAAQv6E,EAAKO,KAA7B,GAChC,CAMA,SAAS8jH,EAAYxwF,GACjB,GAAc,OAAVA,EACA,MAAO,GAMX,IAHA,IAAM+oF,EAAQ,GAGLz1G,EAAI,EAAGA,EAAI0sB,EAAMzuB,OAAQ+B,IAAK,CACnC,IAAMnH,EAAO6zB,EAAM1sB,GACnBy1G,EAAMzyG,KAAKnK,GAGf,OAAO48G,CACX,CAGA,SAASgI,EAAe77E,GACpB,GAAqC,oBAA1BA,EAAKg8E,iBACZ,OAAOC,EAAqBj8E,GAGhC,IAAMxF,EAAQwF,EAAKg8E,mBAKnB,OAAIxhF,GAASA,EAAM0hF,YACRC,EAAa3hF,GAGjByhF,EAAqBj8E,EAChC,CAEA,SAAS+7E,EAAWjxF,GAChB,OAAOA,EAAMsxF,QAAO,SAACC,EAAKxI,GAAU,OAAA4G,EAAAA,EAAA,GAAAF,EAC7B8B,IAAG,GAAA9B,EACFnjH,MAAMC,QAAQw8G,GAASkI,EAAQlI,GAAS,CAACA,KAAO,EAFpB,GAGjC,GACP,CAEA,SAASoI,EAAqBj8E,GAC1B,IAAM/oC,EAAO+oC,EAAK8yE,YAClB,IAAK77G,EACD,OAAOygB,QAAQE,OAAO,GAAAjb,OAAGqjC,EAAI,mBAEjC,IAAMs8E,EAAMvB,EAAe9jH,GAC3B,OAAOygB,QAAQC,QAAQ2kG,EAC3B,CAGA,SAAeC,EAAU/hF,sEACrB,MAAO,CAAP,EAAOA,EAAM0hF,YAAcC,EAAa3hF,GAASgiF,EAAchiF,UAInE,SAAS2hF,EAAa3hF,GAClB,IAAMrP,EAASqP,EAAMiiF,eAErB,OAAO,IAAI/kG,SAAqB,SAACC,EAASC,GACtC,IAAM6iB,EAAkC,IAExC,SAASiiF,IAAT,IAAAt8D,EAAA,KAGIj1B,EAAOuxF,aAAY,SAAOC,GAAY,OAAAhD,EAAAv5D,OAAA,oFAC7Bu8D,EAAMtgH,OAAP,6BAGkB,gCAAMqb,QAAQne,IAAIkhC,kBAA1Bo5E,EAAQ6H,EAAAtB,OACdziG,EAAQk8F,kCAERj8F,EAAOglG,mCAGL9xF,EAAQpT,QAAQne,IAAIojH,EAAM/8G,IAAI28G,IACpC9hF,EAAQr5B,KAAK0pB,GAGb4xF,yCAEL,SAACxhH,GACA0c,EAAO1c,EACX,GACJ,CAEAwhH,EACJ,GACJ,CAGA,SAAeF,EAAchiF,sEACzB,MAAO,CAAP,EAAO,IAAI9iB,SAAsB,SAACC,EAASC,GACvC4iB,EAAMvjC,MAAK,SAACA,GACR,IAAMqlH,EAAMvB,EAAe9jH,EAAMujC,EAAMqiF,UACvCllG,EAAQ2kG,EACZ,IAAG,SAACphH,GACA0c,EAAO1c,EACX,GACJ,0BCpLJ,SAAS4hH,EAAmB19D,GAAO,OAMnC,SAA4BA,GAAO,GAAIhoD,MAAMC,QAAQ+nD,GAAM,OAAO29D,EAAkB39D,EAAM,CANhD49D,CAAmB59D,IAI7D,SAA0Bo2B,GAAQ,GAAsB,qBAAXxH,QAAmD,MAAzBwH,EAAKxH,OAAOwnC,WAA2C,MAAtBhgC,EAAK,cAAuB,OAAOp+E,MAAMkmF,KAAK9H,EAAO,CAJxFynC,CAAiB79D,IAAQ89D,EAA4B99D,IAE1H,WAAgC,MAAM,IAAIg5D,UAAU,uIAAyI,CAF3D+E,EAAsB,CAQxJ,SAASpH,EAAQC,EAAQC,GAAkB,IAAI/1G,EAAOJ,OAAOI,KAAK81G,GAAS,GAAIl2G,OAAOo2G,sBAAuB,CAAE,IAAIC,EAAUr2G,OAAOo2G,sBAAsBF,GAASC,IAAmBE,EAAUA,EAAQ73D,QAAO,SAAU83D,GAAO,OAAOt2G,OAAOu2G,yBAAyBL,EAAQI,GAAKxlG,UAAY,KAAK1Q,EAAKkB,KAAKiQ,MAAMnR,EAAMi2G,EAAU,CAAE,OAAOj2G,CAAM,CAEpV,SAASo2G,EAAcr1E,GAAU,IAAK,IAAI7iC,EAAI,EAAGA,EAAIhC,UAAUC,OAAQ+B,IAAK,CAAE,IAAIohB,EAAS,MAAQpjB,UAAUgC,GAAKhC,UAAUgC,GAAK,CAAC,EAAGA,EAAI,EAAI23G,EAAQj2G,OAAO0f,IAAS,GAAI+2F,SAAQ,SAAUv2G,GAAO+8B,EAAgBkE,EAAQjhC,EAAKwf,EAAOxf,GAAO,IAAKF,OAAO02G,0BAA4B12G,OAAO22G,iBAAiBx1E,EAAQnhC,OAAO02G,0BAA0Bh3F,IAAWu2F,EAAQj2G,OAAO0f,IAAS+2F,SAAQ,SAAUv2G,GAAOF,OAAO6Q,eAAeswB,EAAQjhC,EAAKF,OAAOu2G,yBAAyB72F,EAAQxf,GAAO,GAAI,CAAE,OAAOihC,CAAQ,CAEzf,SAASlE,EAAgBl9B,EAAKG,EAAKC,GAAiK,OAApJD,KAAOH,EAAOC,OAAO6Q,eAAe9Q,EAAKG,EAAK,CAAEC,MAAOA,EAAO2Q,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBjR,EAAIG,GAAOC,EAAgBJ,CAAK,CAIhN,SAASu9G,EAAeh+D,EAAKhhD,GAAK,OAUlC,SAAyBghD,GAAO,GAAIhoD,MAAMC,QAAQ+nD,GAAM,OAAOA,CAAK,CAV3Bi+D,CAAgBj+D,IAQzD,SAA+BA,EAAKhhD,GAAK,IAAIk/G,EAAY,MAAPl+D,EAAc,KAAyB,qBAAX4uB,QAA0B5uB,EAAI4uB,OAAOwnC,WAAap2D,EAAI,cAAe,GAAU,MAANk+D,EAAY,OAAQ,IAAkDC,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKL,EAAKA,EAAGjqG,KAAK+rC,KAAQs+D,GAAMH,EAAKD,EAAGxtE,QAAQrkB,QAAoBgyF,EAAKr8G,KAAKm8G,EAAGt9G,QAAY7B,GAAKq/G,EAAKphH,SAAW+B,GAA3Ds/G,GAAK,GAAkE,CAAE,MAAOxiH,GAAOyiH,GAAK,EAAMH,EAAKtiH,CAAK,CAAE,QAAU,IAAWwiH,GAAsB,MAAhBJ,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAIK,EAAI,MAAMH,CAAI,CAAE,CAAE,OAAOC,CAAM,CAR/bG,CAAsBx+D,EAAKhhD,IAAM8+G,EAA4B99D,EAAKhhD,IAEnI,WAA8B,MAAM,IAAIg6G,UAAU,4IAA8I,CAFvDyF,EAAoB,CAI7J,SAASX,EAA4B9F,EAAG0G,GAAU,GAAK1G,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAO2F,EAAkB3F,EAAG0G,GAAS,IAAIvqG,EAAIzT,OAAOoR,UAAU7T,SAASgW,KAAK+jG,GAAG5iG,MAAM,GAAI,GAAiE,MAAnD,WAANjB,GAAkB6jG,EAAEnmG,cAAasC,EAAI6jG,EAAEnmG,YAAYzZ,MAAgB,QAAN+b,GAAqB,QAANA,EAAoBnc,MAAMkmF,KAAK85B,GAAc,cAAN7jG,GAAqB,2CAA2ClY,KAAKkY,GAAWwpG,EAAkB3F,EAAG0G,QAAzG,CAA7O,CAA+V,CAE/Z,SAASf,EAAkB39D,EAAK+8B,IAAkB,MAAPA,GAAeA,EAAM/8B,EAAI/iD,UAAQ8/E,EAAM/8B,EAAI/iD,QAAQ,IAAK,IAAI+B,EAAI,EAAGY,EAAO,IAAI5H,MAAM+kF,GAAM/9E,EAAI+9E,EAAK/9E,IAAOY,EAAKZ,GAAKghD,EAAIhhD,GAAM,OAAOY,CAAM,CAQ/K,IAAI++G,EAAoB,oBACpBC,EAAiB,iBACjBC,EAAiB,iBACjBC,EAAiB,iBAQjBC,EAA6B,SAAoCvK,GAC1EA,EAASx8G,MAAMC,QAAQu8G,IAA6B,IAAlBA,EAAOv3G,OAAeu3G,EAAO,GAAKA,EACpE,IAAIwK,EAAgBhnH,MAAMC,QAAQu8G,GAAU,UAAUj3G,OAAOi3G,EAAOh2G,KAAK,OAASg2G,EAClF,MAAO,CACL3yG,KAAM88G,EACNrlH,QAAS,qBAAqBiE,OAAOyhH,GAEzC,EACWC,EAA0B,SAAiC3uE,GACpE,MAAO,CACLzuC,KAAM+8G,EACNtlH,QAAS,uBAAuBiE,OAAO+yC,EAAS,KAAK/yC,OAAmB,IAAZ+yC,EAAgB,OAAS,SAEzF,EACW4uE,EAA0B,SAAiCC,GACpE,MAAO,CACLt9G,KAAMg9G,EACNvlH,QAAS,wBAAwBiE,OAAO4hH,EAAS,KAAK5hH,OAAmB,IAAZ4hH,EAAgB,OAAS,SAE1F,EACWC,EAA2B,CACpCv9G,KAAMi9G,EACNxlH,QAAS,kBAIJ,SAAS+lH,EAAaxnH,EAAM28G,GACjC,IAAI8K,EAA6B,2BAAdznH,EAAKS,OAAqCinH,EAAAA,EAAAA,GAAQ1nH,EAAM28G,GAC3E,MAAO,CAAC8K,EAAcA,EAAe,KAAOP,EAA2BvK,GACzE,CACO,SAASgL,EAAc3nH,EAAMsnH,EAAS7uE,GAC3C,GAAImvE,EAAU5nH,EAAK4zB,MACjB,GAAIg0F,EAAUN,IAAYM,EAAUnvE,GAAU,CAC5C,GAAIz4C,EAAK4zB,KAAO6kB,EAAS,MAAO,EAAC,EAAO2uE,EAAwB3uE,IAChE,GAAIz4C,EAAK4zB,KAAO0zF,EAAS,MAAO,EAAC,EAAOD,EAAwBC,GAClE,KAAO,IAAIM,EAAUN,IAAYtnH,EAAK4zB,KAAO0zF,EAAS,MAAO,EAAC,EAAOD,EAAwBC,IAAe,GAAIM,EAAUnvE,IAAYz4C,EAAK4zB,KAAO6kB,EAAS,MAAO,EAAC,EAAO2uE,EAAwB3uE,GAAS,CAG7M,MAAO,EAAC,EAAM,KAChB,CAEA,SAASmvE,EAAU5+G,GACjB,YAAiB3D,IAAV2D,GAAiC,OAAVA,CAChC,CA4CO,SAAS6+G,EAAqBlxF,GACnC,MAA0C,oBAA/BA,EAAMkxF,qBACRlxF,EAAMkxF,uBAC0B,qBAAvBlxF,EAAMmxF,cACfnxF,EAAMmxF,YAIjB,CACO,SAASC,EAAepxF,GAC7B,OAAKA,EAAMqxF,aAMJ7nH,MAAM8Z,UAAUpZ,KAAKub,KAAKua,EAAMqxF,aAAa1mE,OAAO,SAAU7gD,GACnE,MAAgB,UAATA,GAA6B,2BAATA,CAC7B,MAPWk2B,EAAMqT,UAAYrT,EAAMqT,OAAO4yE,KAQ5C,CAKO,SAASqL,EAAmBtxF,GACjCA,EAAMxzB,gBACR,CAyBO,SAAS+kH,IACd,IAAK,IAAIjG,EAAO98G,UAAUC,OAAQ+iH,EAAM,IAAIhoH,MAAM8hH,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC9EiG,EAAIjG,GAAQ/8G,UAAU+8G,GAGxB,OAAO,SAAUvrF,GACf,IAAK,IAAIyxF,EAAQjjH,UAAUC,OAAQw0C,EAAO,IAAIz5C,MAAMioH,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGzuE,EAAKyuE,EAAQ,GAAKljH,UAAUkjH,GAG9B,OAAOF,EAAItnH,MAAK,SAAUynF,GAKxB,OAJKu/B,EAAqBlxF,IAAU2xD,GAClCA,EAAGluE,WAAM,EAAQ,CAACuc,GAAOjxB,OAAOk0C,IAG3BiuE,EAAqBlxF,EAC9B,GACF,CACF,CA0GO,SAAS2xF,EAAW1gH,GACzB,MAAa,YAANA,GAAyB,YAANA,GAAyB,YAANA,GAAyB,WAANA,GAAkB,iBAAiBxD,KAAKwD,EAC1G,CAMO,SAAS2gH,EAAM3gH,GACpB,MAAO,cAAcxD,KAAKwD,EAC5B,CCzTA,IAAIg3G,EAAY,CAAC,YACb4J,EAAa,CAAC,QACdC,EAAa,CAAC,SAAU,OAAQ,YAAa,UAAW,SAAU,UAAW,cAAe,aAAc,cAAe,UACzHC,EAAa,CAAC,SAAU,WAAY,WAExC,SAAS7C,GAAmB19D,GAAO,OAMnC,SAA4BA,GAAO,GAAIhoD,MAAMC,QAAQ+nD,GAAM,OAAO29D,GAAkB39D,EAAM,CANhD49D,CAAmB59D,IAI7D,SAA0Bo2B,GAAQ,GAAsB,qBAAXxH,QAAmD,MAAzBwH,EAAKxH,OAAOwnC,WAA2C,MAAtBhgC,EAAK,cAAuB,OAAOp+E,MAAMkmF,KAAK9H,EAAO,CAJxFynC,CAAiB79D,IAAQ89D,GAA4B99D,IAE1H,WAAgC,MAAM,IAAIg5D,UAAU,uIAAyI,CAF3D+E,EAAsB,CAQxJ,SAASC,GAAeh+D,EAAKhhD,GAAK,OAUlC,SAAyBghD,GAAO,GAAIhoD,MAAMC,QAAQ+nD,GAAM,OAAOA,CAAK,CAV3Bi+D,CAAgBj+D,IAQzD,SAA+BA,EAAKhhD,GAAK,IAAIk/G,EAAY,MAAPl+D,EAAc,KAAyB,qBAAX4uB,QAA0B5uB,EAAI4uB,OAAOwnC,WAAap2D,EAAI,cAAe,GAAU,MAANk+D,EAAY,OAAQ,IAAkDC,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKL,EAAKA,EAAGjqG,KAAK+rC,KAAQs+D,GAAMH,EAAKD,EAAGxtE,QAAQrkB,QAAoBgyF,EAAKr8G,KAAKm8G,EAAGt9G,QAAY7B,GAAKq/G,EAAKphH,SAAW+B,GAA3Ds/G,GAAK,GAAkE,CAAE,MAAOxiH,GAAOyiH,GAAK,EAAMH,EAAKtiH,CAAK,CAAE,QAAU,IAAWwiH,GAAsB,MAAhBJ,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAIK,EAAI,MAAMH,CAAI,CAAE,CAAE,OAAOC,CAAM,CAR/bG,CAAsBx+D,EAAKhhD,IAAM8+G,GAA4B99D,EAAKhhD,IAEnI,WAA8B,MAAM,IAAIg6G,UAAU,4IAA8I,CAFvDyF,EAAoB,CAI7J,SAASX,GAA4B9F,EAAG0G,GAAU,GAAK1G,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAO2F,GAAkB3F,EAAG0G,GAAS,IAAIvqG,EAAIzT,OAAOoR,UAAU7T,SAASgW,KAAK+jG,GAAG5iG,MAAM,GAAI,GAAiE,MAAnD,WAANjB,GAAkB6jG,EAAEnmG,cAAasC,EAAI6jG,EAAEnmG,YAAYzZ,MAAgB,QAAN+b,GAAqB,QAANA,EAAoBnc,MAAMkmF,KAAK85B,GAAc,cAAN7jG,GAAqB,2CAA2ClY,KAAKkY,GAAWwpG,GAAkB3F,EAAG0G,QAAzG,CAA7O,CAA+V,CAE/Z,SAASf,GAAkB39D,EAAK+8B,IAAkB,MAAPA,GAAeA,EAAM/8B,EAAI/iD,UAAQ8/E,EAAM/8B,EAAI/iD,QAAQ,IAAK,IAAI+B,EAAI,EAAGY,EAAO,IAAI5H,MAAM+kF,GAAM/9E,EAAI+9E,EAAK/9E,IAAOY,EAAKZ,GAAKghD,EAAIhhD,GAAM,OAAOY,CAAM,CAMtL,SAAS+2G,GAAQC,EAAQC,GAAkB,IAAI/1G,EAAOJ,OAAOI,KAAK81G,GAAS,GAAIl2G,OAAOo2G,sBAAuB,CAAE,IAAIC,EAAUr2G,OAAOo2G,sBAAsBF,GAASC,IAAmBE,EAAUA,EAAQ73D,QAAO,SAAU83D,GAAO,OAAOt2G,OAAOu2G,yBAAyBL,EAAQI,GAAKxlG,UAAY,KAAK1Q,EAAKkB,KAAKiQ,MAAMnR,EAAMi2G,EAAU,CAAE,OAAOj2G,CAAM,CAEpV,SAASo2G,GAAcr1E,GAAU,IAAK,IAAI7iC,EAAI,EAAGA,EAAIhC,UAAUC,OAAQ+B,IAAK,CAAE,IAAIohB,EAAS,MAAQpjB,UAAUgC,GAAKhC,UAAUgC,GAAK,CAAC,EAAGA,EAAI,EAAI23G,GAAQj2G,OAAO0f,IAAS,GAAI+2F,SAAQ,SAAUv2G,GAAO+8B,GAAgBkE,EAAQjhC,EAAKwf,EAAOxf,GAAO,IAAKF,OAAO02G,0BAA4B12G,OAAO22G,iBAAiBx1E,EAAQnhC,OAAO02G,0BAA0Bh3F,IAAWu2F,GAAQj2G,OAAO0f,IAAS+2F,SAAQ,SAAUv2G,GAAOF,OAAO6Q,eAAeswB,EAAQjhC,EAAKF,OAAOu2G,yBAAyB72F,EAAQxf,GAAO,GAAI,CAAE,OAAOihC,CAAQ,CAEzf,SAASlE,GAAgBl9B,EAAKG,EAAKC,GAAiK,OAApJD,KAAOH,EAAOC,OAAO6Q,eAAe9Q,EAAKG,EAAK,CAAEC,MAAOA,EAAO2Q,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBjR,EAAIG,GAAOC,EAAgBJ,CAAK,CAEhN,SAAS62G,GAAyBl3F,EAAQm3F,GAAY,GAAc,MAAVn3F,EAAgB,MAAO,CAAC,EAAG,IAAkExf,EAAK5B,EAAnE6iC,EAEzF,SAAuCzhB,EAAQm3F,GAAY,GAAc,MAAVn3F,EAAgB,MAAO,CAAC,EAAG,IAA2Dxf,EAAK5B,EAA5D6iC,EAAS,CAAC,EAAO21E,EAAa92G,OAAOI,KAAKsf,GAAqB,IAAKphB,EAAI,EAAGA,EAAIw4G,EAAWv6G,OAAQ+B,IAAO4B,EAAM42G,EAAWx4G,GAAQu4G,EAASnlC,QAAQxxE,IAAQ,IAAaihC,EAAOjhC,GAAOwf,EAAOxf,IAAQ,OAAOihC,CAAQ,CAFhN41E,CAA8Br3F,EAAQm3F,GAAuB,GAAI72G,OAAOo2G,sBAAuB,CAAE,IAAIY,EAAmBh3G,OAAOo2G,sBAAsB12F,GAAS,IAAKphB,EAAI,EAAGA,EAAI04G,EAAiBz6G,OAAQ+B,IAAO4B,EAAM82G,EAAiB14G,GAAQu4G,EAASnlC,QAAQxxE,IAAQ,GAAkBF,OAAOoR,UAAU6lG,qBAAqB1jG,KAAKmM,EAAQxf,KAAgBihC,EAAOjhC,GAAOwf,EAAOxf,GAAQ,CAAE,OAAOihC,CAAQ,CAwB3e,IAAI2+E,IAAwBC,EAAAA,EAAAA,aAAW,SAAUhhG,EAAMiE,GACrD,IAAIiE,EAAWlI,EAAKkI,SAGhB+4F,EAAeC,GAFNrJ,GAAyB73F,EAAMg3F,IAGxCr0D,EAAOs+D,EAAat+D,KACpBy1D,EAAQP,GAAyBoJ,EAAcL,GAQnD,OANAO,EAAAA,EAAAA,qBAAoBl9F,GAAK,WACvB,MAAO,CACL0+B,KAAMA,EAEV,GAAG,CAACA,IAEgBy+D,EAAAA,cAAoBC,EAAAA,SAAU,KAAMn5F,EAASuvF,GAAcA,GAAc,CAAC,EAAGW,GAAQ,CAAC,EAAG,CAC3Gz1D,KAAMA,KAEV,IACAo+D,GAASO,YAAc,WAEvB,IAAIC,GAAe,CACjBvsB,UAAU,EACVwsB,kBFzDI,SAA0BxtF,sEAC5B,OAAIuoF,EAAoBvoF,IAWjBuoF,EAXwCvoF,EAAIosF,cACxC,CAAP,EAAOtD,EAAqB9oF,EAAIosF,aAAcpsF,EAAIn7B,OAa1D,SAAqBuI,GACjB,OAAOm7G,EAAgBn7G,IAAUm7G,EAASn7G,EAAMghC,OACpD,CAdeq/E,CAAYztF,GACZ,CAAP,EAAOwoF,EAAcxoF,IACdz7B,MAAMC,QAAQw7B,IAAQA,EAAI6e,OAAM,SAAA1R,GAAQ,kBAAaA,GAAgC,oBAAjBA,EAAKy7E,OAAjC,IACxC,CAAP,EAAOF,EAAiB1oF,IAErB,CAAC,EAAD,WEkDT6c,QAASmf,IACT0vD,QAAS,EACTrf,UAAU,EACVqhB,SAAU,EACVC,uBAAuB,EACvBC,SAAS,EACTC,YAAY,EACZC,QAAQ,EACRC,sBAAsB,EACtBC,UAAW,KACXC,gBAAgB,EAChBC,WAAW,GAEbnB,GAASQ,aAAeA,GACxBR,GAASoB,UAAY,CAgBnBj6F,SAAUk6F,IAAAA,KASVrN,OAAQqN,IAAAA,SAAmBA,IAAAA,QAAkBA,IAAAA,SAK7C/hB,SAAU+hB,IAAAA,KAKVT,sBAAuBS,IAAAA,KAKvBR,QAASQ,IAAAA,KAMTP,WAAYO,IAAAA,KAKZN,OAAQM,IAAAA,KAKRL,qBAAsBK,IAAAA,KAKtB1C,QAAS0C,IAAAA,OAKTvxE,QAASuxE,IAAAA,OAMTV,SAAUU,IAAAA,OAKVptB,SAAUotB,IAAAA,KAOVZ,kBAAmBY,IAAAA,KAKnBC,mBAAoBD,IAAAA,KAKpBE,iBAAkBF,IAAAA,KAMlBH,eAAgBG,IAAAA,KAKhBF,UAAWE,IAAAA,KAOXG,YAAaH,IAAAA,KAObI,YAAaJ,IAAAA,KAObK,WAAYL,IAAAA,KAgCZM,OAAQN,IAAAA,KASRO,eAAgBP,IAAAA,KAShBQ,eAAgBR,IAAAA,KAOhBjqC,QAASiqC,IAAAA,KAOTJ,UAAWI,IAAAA,MAwEb,IAAIS,GAAe,CACjBC,WAAW,EACXC,oBAAoB,EACpBC,cAAc,EACdC,cAAc,EACdC,cAAc,EACd7qH,cAAe,GACf8qH,eAAgB,IA+EX,SAASjC,KACd,IAAI9I,EAAQ76G,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE7E6lH,EAAsB3L,GAAcA,GAAc,CAAC,EAAG8J,IAAenJ,GACrErD,EAASqO,EAAoBrO,OAC7B/f,EAAWouB,EAAoBpuB,SAC/BwsB,EAAoB4B,EAAoB5B,kBACxC3wE,EAAUuyE,EAAoBvyE,QAC9B6uE,EAAU0D,EAAoB1D,QAC9Brf,EAAW+iB,EAAoB/iB,SAC/BqhB,EAAW0B,EAAoB1B,SAC/Ba,EAAca,EAAoBb,YAClCC,EAAcY,EAAoBZ,YAClCC,EAAaW,EAAoBX,WACjCC,EAASU,EAAoBV,OAC7BC,EAAiBS,EAAoBT,eACrCC,EAAiBQ,EAAoBR,eACrCP,EAAqBe,EAAoBf,mBACzCC,EAAmBc,EAAoBd,iBACvCL,EAAiBmB,EAAoBnB,eACrCC,EAAYkB,EAAoBlB,UAChCP,EAAwByB,EAAoBzB,sBAC5CC,EAAUwB,EAAoBxB,QAC9BC,EAAauB,EAAoBvB,WACjCC,EAASsB,EAAoBtB,OAC7BC,EAAuBqB,EAAoBrB,qBAC3C5pC,EAAUirC,EAAoBjrC,QAC9B6pC,EAAYoB,EAAoBpB,UAEhCqB,GAAaC,EAAAA,EAAAA,UAAQ,WACvB,ODrNG,SAAgCvO,GACrC,GAAIiL,EAAUjL,GACZ,OAAO9zG,OAAO26B,QAAQm5E,GAAQwI,QAAO,SAAUrnG,EAAG8X,GAChD,IAAIC,EAAQswF,EAAevwF,EAAO,GAC9Bp1B,EAAWq1B,EAAM,GACjBkuF,EAAMluF,EAAM,GAEhB,MAAO,GAAGnwB,OAAOmgH,EAAmB/nG,GAAI,CAACtd,GAAWqlH,EAAmB9B,GACzE,GAAG,IACF18D,QAAO,SAAUz/C,GAChB,OAAO0gH,EAAW1gH,IAAM2gH,EAAM3gH,EAChC,IAAGjB,KAAK,IAIZ,CCsMWwkH,CAAuBxO,EAChC,GAAG,CAACA,IACAyO,GAAcF,EAAAA,EAAAA,UAAQ,WACxB,ODlQG,SAAiCvO,GACtC,OAAIiL,EAAUjL,GA0BL,CAAC,CAEN0O,YAAa,QACb1O,OA5BoB9zG,OAAO26B,QAAQm5E,GAAQt1D,QAAO,SAAUr3B,GAC5D,IAAI4C,EAAQuzF,EAAen2F,EAAO,GAC9BxvB,EAAWoyB,EAAM,GACjBmxF,EAAMnxF,EAAM,GAEZ0kB,GAAK,EAYT,OAVKgxE,EAAW9nH,KACd6C,QAAQC,KAAK,YAAaoC,OAAOlF,EAAU,0KAC3C82C,GAAK,GAGFn3C,MAAMC,QAAQ2jH,IAASA,EAAItpE,MAAM8tE,KACpCllH,QAAQC,KAAK,YAAaoC,OAAOlF,EAAU,sDAC3C82C,GAAK,GAGAA,CACT,IAAG6tE,QAAO,SAAUmG,EAAK/2F,GACvB,IAAIiB,EAAQ2wF,EAAe5xF,EAAO,GAC9B/zB,EAAWg1B,EAAM,GACjBuuF,EAAMvuF,EAAM,GAEhB,OAAO6pF,EAAcA,EAAc,CAAC,EAAGiM,GAAM,CAAC,EAAGxlF,EAAgB,CAAC,EAAGtlC,EAAUujH,GACjF,GAAG,CAAC,KAQCpH,CACT,CC+NW4O,CAAwB5O,EACjC,GAAG,CAACA,IACA6O,GAAqBN,EAAAA,EAAAA,UAAQ,WAC/B,MAAmC,oBAArBhB,EAAkCA,EAAmBuB,EACrE,GAAG,CAACvB,IACAwB,GAAuBR,EAAAA,EAAAA,UAAQ,WACjC,MAAqC,oBAAvBjB,EAAoCA,EAAqBwB,EACzE,GAAG,CAACxB,IAMA0B,GAAUC,EAAAA,EAAAA,QAAO,MACjBC,GAAWD,EAAAA,EAAAA,QAAO,MAGlBE,EAAe3F,IADD4F,EAAAA,EAAAA,YAAWC,GAASvB,IACS,GAC3C7yC,EAAQk0C,EAAa,GACrB73E,EAAW63E,EAAa,GAExBpB,EAAY9yC,EAAM8yC,UAClBC,EAAqB/yC,EAAM+yC,mBAC3BsB,IAAsBL,EAAAA,EAAAA,QAAyB,qBAAXroH,QAA0BA,OAAO2oH,iBAAmBrC,GDnSrF,uBAAwBtmH,QCqS3B4oH,GAAgB,YAEbF,GAAoB/4D,SAAWy3D,GAClC10F,YAAW,WACL41F,EAAS34D,UACC24D,EAAS34D,QAAQ0pD,MAElBx3G,SACT6uC,EAAS,CACPxzC,KAAM,gBAERirH,KAGN,GAAG,IAEP,GAEAU,EAAAA,EAAAA,YAAU,WAER,OADA7oH,OAAOR,iBAAiB,QAASopH,IAAe,GACzC,WACL5oH,OAAOszB,oBAAoB,QAASs1F,IAAe,EACrD,CACF,GAAG,CAACN,EAAUlB,EAAoBe,EAAsBO,KACxD,IAAII,IAAiBT,EAAAA,EAAAA,QAAO,IAExBU,GAAiB,SAAwB31F,GACvCg1F,EAAQz4D,SAAWy4D,EAAQz4D,QAAQtjB,SAASjZ,EAAMqT,UAKtDrT,EAAMxzB,iBACNkpH,GAAen5D,QAAU,GAC3B,GAEAk5D,EAAAA,EAAAA,YAAU,WAMR,OALI7C,IACFxnH,SAASgB,iBAAiB,WAAYklH,GAAoB,GAC1DlmH,SAASgB,iBAAiB,OAAQupH,IAAgB,IAG7C,WACD/C,IACFxnH,SAAS80B,oBAAoB,WAAYoxF,GACzClmH,SAAS80B,oBAAoB,OAAQy1F,IAEzC,CACF,GAAG,CAACX,EAASpC,KAEb6C,EAAAA,EAAAA,YAAU,WAKR,OAJKxvB,GAAYktB,GAAa6B,EAAQz4D,SACpCy4D,EAAQz4D,QAAQpjB,QAGX,WAAa,CACtB,GAAG,CAAC67E,EAAS7B,EAAWltB,IACxB,IAAI2vB,IAAUC,EAAAA,EAAAA,cAAY,SAAUxpH,GAC9B+8E,EACFA,EAAQ/8E,GAGRK,QAAQa,MAAMlB,EAElB,GAAG,CAAC+8E,IACA0sC,IAAgBD,EAAAA,EAAAA,cAAY,SAAU71F,GACxCA,EAAMxzB,iBAENwzB,EAAM+1F,UACNzpH,GAAgB0zB,GAChB01F,GAAen5D,QAAU,GAAGxtD,OAAOmgH,GAAmBwG,GAAen5D,SAAU,CAACv8B,EAAMqT,SAElF+9E,EAAepxF,IACjBlW,QAAQC,QAAQ0oG,EAAkBzyF,IAAQ7P,MAAK,SAAU81F,GACvD,IAAIiL,EAAqBlxF,IAAWgzF,EAApC,CAIA,IAAIgD,EAAY/P,EAAMx3G,OAClBylH,EAAe8B,EAAY,GD9dhC,SAA0B/kG,GAC/B,IAAIg1F,EAAQh1F,EAAKg1F,MACbD,EAAS/0F,EAAK+0F,OACd2K,EAAU1/F,EAAK0/F,QACf7uE,EAAU7wB,EAAK6wB,QACfwvD,EAAWrgF,EAAKqgF,SAChBqhB,EAAW1hG,EAAK0hG,SAChBM,EAAYhiG,EAAKgiG,UAErB,SAAK3hB,GAAY2U,EAAMx3G,OAAS,GAAK6iG,GAAYqhB,GAAY,GAAK1M,EAAMx3G,OAASkkH,IAI1E1M,EAAMniE,OAAM,SAAUz6C,GAC3B,IAEI4sH,EADiBzG,EADDqB,EAAaxnH,EAAM28G,GACY,GACrB,GAI1BkQ,EADkB1G,EADDwB,EAAc3nH,EAAMsnH,EAAS7uE,GACG,GACrB,GAE5Bq0E,EAAelD,EAAYA,EAAU5pH,GAAQ,KACjD,OAAO4sH,GAAYC,IAAcC,CACnC,GACF,CCqc4CC,CAAiB,CACnDnQ,MAAOA,EACPD,OAAQsO,EACR3D,QAASA,EACT7uE,QAASA,EACTwvD,SAAUA,EACVqhB,SAAUA,EACVM,UAAWA,IAGb31E,EAAS,CACP42E,aAAcA,EACdC,aAHiB6B,EAAY,IAAM9B,EAInCD,cAAc,EACdnqH,KAAM,oBAGJ0pH,GACFA,EAAYxzF,EArBd,CAuBF,IAAGvO,OAAM,SAAUplB,GACjB,OAAOupH,GAAQvpH,EACjB,GAEJ,GAAG,CAAComH,EAAmBe,EAAaoC,GAAS5C,EAAsBsB,EAAY3D,EAAS7uE,EAASwvD,EAAUqhB,EAAUM,IACjHoD,IAAeR,EAAAA,EAAAA,cAAY,SAAU71F,GACvCA,EAAMxzB,iBACNwzB,EAAM+1F,UACNzpH,GAAgB0zB,GAChB,IAAIs2F,EAAWlF,EAAepxF,GAE9B,GAAIs2F,GAAYt2F,EAAMqxF,aACpB,IACErxF,EAAMqxF,aAAakF,WAAa,MAClC,CAAE,MAAOC,GAAU,CASrB,OAJIF,GAAY5C,GACdA,EAAW1zF,IAGN,CACT,GAAG,CAAC0zF,EAAYV,IACZyD,IAAgBZ,EAAAA,EAAAA,cAAY,SAAU71F,GACxCA,EAAMxzB,iBACNwzB,EAAM+1F,UACNzpH,GAAgB0zB,GAEhB,IAAI02F,EAAUhB,GAAen5D,QAAQ7L,QAAO,SAAUrd,GACpD,OAAO2hF,EAAQz4D,SAAWy4D,EAAQz4D,QAAQtjB,SAAS5F,EACrD,IAGIsjF,EAAYD,EAAQ9yC,QAAQ5jD,EAAMqT,SAEnB,IAAfsjF,GACFD,EAAQv0E,OAAOw0E,EAAW,GAG5BjB,GAAen5D,QAAUm6D,EAErBA,EAAQjoH,OAAS,IAIrB6uC,EAAS,CACPxzC,KAAM,kBACNmqH,cAAc,EACdC,cAAc,EACdC,cAAc,IAGZ/C,EAAepxF,IAAUyzF,GAC3BA,EAAYzzF,GAEhB,GAAG,CAACg1F,EAASvB,EAAaT,IACtB4D,IAAWf,EAAAA,EAAAA,cAAY,SAAU5P,EAAOjmF,GAC1C,IAAI12B,EAAgB,GAChB8qH,EAAiB,GACrBnO,EAAM0C,SAAQ,SAAUt/G,GACtB,IACIwtH,EAAiBrH,GADDqB,EAAaxnH,EAAMirH,GACY,GAC/C2B,EAAWY,EAAe,GAC1BC,EAAcD,EAAe,GAG7BE,EAAkBvH,GADDwB,EAAc3nH,EAAMsnH,EAAS7uE,GACG,GACjDo0E,EAAYa,EAAgB,GAC5BC,EAAYD,EAAgB,GAE5BZ,EAAelD,EAAYA,EAAU5pH,GAAQ,KAEjD,GAAI4sH,GAAYC,IAAcC,EAC5B7sH,EAAckK,KAAKnK,OACd,CACL,IAAI4tH,EAAS,CAACH,EAAaE,GAEvBb,IACFc,EAASA,EAAOloH,OAAOonH,IAGzB/B,EAAe5gH,KAAK,CAClBnK,KAAMA,EACN4tH,OAAQA,EAAOvmE,QAAO,SAAUrkD,GAC9B,OAAOA,CACT,KAEJ,CACF,MAEKilG,GAAYhoG,EAAcmF,OAAS,GAAK6iG,GAAYqhB,GAAY,GAAKrpH,EAAcmF,OAASkkH,KAE/FrpH,EAAcq/G,SAAQ,SAAUt/G,GAC9B+qH,EAAe5gH,KAAK,CAClBnK,KAAMA,EACN4tH,OAAQ,CAACrG,IAEb,IACAtnH,EAAc64C,OAAO,IAGvB7E,EAAS,CACPh0C,cAAeA,EACf8qH,eAAgBA,EAChBtqH,KAAM,aAGJ6pH,GACFA,EAAOrqH,EAAe8qH,EAAgBp0F,GAGpCo0F,EAAe3lH,OAAS,GAAKolH,GAC/BA,EAAeO,EAAgBp0F,GAG7B12B,EAAcmF,OAAS,GAAKmlH,GAC9BA,EAAetqH,EAAe02B,EAElC,GAAG,CAACsd,EAAUg0D,EAAUgjB,EAAY3D,EAAS7uE,EAAS6wE,EAAUgB,EAAQC,EAAgBC,EAAgBZ,IACpGiE,IAAWrB,EAAAA,EAAAA,cAAY,SAAU71F,GACnCA,EAAMxzB,iBAENwzB,EAAM+1F,UACNzpH,GAAgB0zB,GAChB01F,GAAen5D,QAAU,GAErB60D,EAAepxF,IACjBlW,QAAQC,QAAQ0oG,EAAkBzyF,IAAQ7P,MAAK,SAAU81F,GACnDiL,EAAqBlxF,KAAWgzF,GAIpC4D,GAAS3Q,EAAOjmF,EAClB,IAAGvO,OAAM,SAAUplB,GACjB,OAAOupH,GAAQvpH,EACjB,IAGFixC,EAAS,CACPxzC,KAAM,SAEV,GAAG,CAAC2oH,EAAmBmE,GAAUhB,GAAS5C,IAEtCmE,IAAiBtB,EAAAA,EAAAA,cAAY,WAG/B,GAAIP,GAAoB/4D,QAAxB,CACEjf,EAAS,CACPxzC,KAAM,eAER+qH,IAEA,IAAIuC,EAAO,CACT9lB,SAAUA,EACV3mD,MAAO8pE,GAET7nH,OAAOyqH,mBAAmBD,GAAMjnG,MAAK,SAAUy9F,GAC7C,OAAO6E,EAAkB7E,EAC3B,IAAGz9F,MAAK,SAAU81F,GAChB2Q,GAAS3Q,EAAO,MAChB3oE,EAAS,CACPxzC,KAAM,eAEV,IAAG2nB,OAAM,SAAUplB,GDjelB,IAAiB4E,KCmeJ5E,aDleEirH,eAA4B,eAAXrmH,EAAErH,MAAyBqH,EAAEoC,OAASpC,EAAEsmH,YCmerExC,EAAqB1oH,GACrBixC,EAAS,CACPxzC,KAAM,kBD3dX,SAAyBmH,GAC9B,OAAOA,aAAaqmH,eAA4B,kBAAXrmH,EAAErH,MAA4BqH,EAAEoC,OAASpC,EAAEumH,aAClF,CC2dmBC,CAAgBprH,GAWzBupH,GAAQvpH,IAVRipH,GAAoB/4D,SAAU,EAG1B24D,EAAS34D,SACX24D,EAAS34D,QAAQlqD,MAAQ,KACzB6iH,EAAS34D,QAAQ2pD,SAEjB0P,GAAQ,IAAIvoH,MAAM,kKAKxB,GAEF,MAEI6nH,EAAS34D,UACXjf,EAAS,CACPxzC,KAAM,eAER+qH,IACAK,EAAS34D,QAAQlqD,MAAQ,KACzB6iH,EAAS34D,QAAQ2pD,QAErB,GAAG,CAAC5oE,EAAUu3E,EAAoBE,EAAsB7B,EAAgB0D,GAAUhB,GAASnB,EAAanjB,IAEpGomB,IAAc7B,EAAAA,EAAAA,cAAY,SAAU71F,GAEjCg1F,EAAQz4D,SAAYy4D,EAAQz4D,QAAQo7D,YAAY33F,EAAMqT,UAIzC,MAAdrT,EAAM5tB,KAA6B,UAAd4tB,EAAM5tB,KAAqC,KAAlB4tB,EAAM43F,SAAoC,KAAlB53F,EAAM43F,UAC9E53F,EAAMxzB,iBACN2qH,MAEJ,GAAG,CAACnC,EAASmC,KAETU,IAAYhC,EAAAA,EAAAA,cAAY,WAC1Bv4E,EAAS,CACPxzC,KAAM,SAEV,GAAG,IACCguH,IAAWjC,EAAAA,EAAAA,cAAY,WACzBv4E,EAAS,CACPxzC,KAAM,QAEV,GAAG,IAECiuH,IAAYlC,EAAAA,EAAAA,cAAY,WACtBhD,KDhpBD,WACL,IAAIllH,EAAYa,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK5B,OAAOc,UAAUC,UACrG,OAVF,SAAcA,GACZ,OAAsC,IAA/BA,EAAUi2E,QAAQ,UAAqD,IAAnCj2E,EAAUi2E,QAAQ,WAC/D,CAQSo0C,CAAKrqH,IANd,SAAgBA,GACd,OAAuC,IAAhCA,EAAUi2E,QAAQ,QAC3B,CAI4Bq0C,CAAOtqH,EACnC,CCopBQuqH,GAGFf,KAFA73F,WAAW63F,GAAgB,GAI/B,GAAG,CAACtE,EAASsE,KAETgB,GAAiB,SAAwBxmC,GAC3C,OAAOsU,EAAW,KAAOtU,CAC3B,EAEIymC,GAAyB,SAAgCzmC,GAC3D,OAAOmhC,EAAa,KAAOqF,GAAexmC,EAC5C,EAEI0mC,GAAqB,SAA4B1mC,GACnD,OAAOohC,EAAS,KAAOoF,GAAexmC,EACxC,EAEIrlF,GAAkB,SAAyB0zB,GACzCgzF,GACFhzF,EAAM1zB,iBAEV,EAEIgsH,IAAe/D,EAAAA,EAAAA,UAAQ,WACzB,OAAO,WACL,IAAIl7F,EAAQ7qB,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7E+pH,EAAel/F,EAAMm/F,OACrBA,OAA0B,IAAjBD,EAA0B,MAAQA,EAC3CE,EAAOp/F,EAAMo/F,KACbC,EAAYr/F,EAAMq/F,UAClBC,EAAUt/F,EAAMs/F,QAChBC,EAASv/F,EAAMu/F,OACfjN,EAAUtyF,EAAMsyF,QAChB6H,EAAcn6F,EAAMm6F,YACpBE,EAAar6F,EAAMq6F,WACnBD,EAAcp6F,EAAMo6F,YACpBE,EAASt6F,EAAMs6F,OACfkF,EAAO/P,GAAyBzvF,EAAOy4F,GAE3C,OAAOpJ,GAAcA,GAAcv5E,GAAgB,CACjDupF,UAAWN,GAAuB7G,EAAqBmH,EAAWhB,KAClEiB,QAASP,GAAuB7G,EAAqBoH,EAASd,KAC9De,OAAQR,GAAuB7G,EAAqBqH,EAAQd,KAC5DnM,QAASwM,GAAe5G,EAAqB5F,EAASoM,KACtDvE,YAAa6E,GAAmB9G,EAAqBiC,EAAasC,KAClEpC,WAAY2E,GAAmB9G,EAAqBmC,EAAY2C,KAChE5C,YAAa4E,GAAmB9G,EAAqBkC,EAAagD,KAClE9C,OAAQ0E,GAAmB9G,EAAqBoC,EAAQuD,KACxDuB,KAAsB,kBAATA,GAA8B,KAATA,EAAcA,EAAO,gBACtDD,EAAQxD,GAAW/uB,GAAa6sB,EAE/B,CAAC,EAF2C,CAC9C58E,SAAU,IACH2iF,EACX,CACF,GAAG,CAAC7D,EAAS0C,GAAaG,GAAWC,GAAUC,GAAWjC,GAAeO,GAAcI,GAAeS,GAAUpE,EAAYC,EAAQ9sB,IAChI6yB,IAAsBjD,EAAAA,EAAAA,cAAY,SAAU71F,GAC9CA,EAAM1zB,iBACR,GAAG,IACCysH,IAAgBxE,EAAAA,EAAAA,UAAQ,WAC1B,OAAO,WACL,IAAIt4F,EAAQztB,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7EwqH,EAAe/8F,EAAMu8F,OACrBA,OAA0B,IAAjBQ,EAA0B,MAAQA,EAC3CC,EAAWh9F,EAAMg9F,SACjBtN,EAAU1vF,EAAM0vF,QAChBkN,EAAO/P,GAAyB7sF,EAAO81F,GAc3C,OAAOrJ,GAAcA,GAAc,CAAC,EAZnBv5E,GAAgB,CAC/B62E,OAAQsO,EACRhjB,SAAUA,EACVxnG,KAAM,OACN4B,MAAO,CACLk1F,QAAS,QAEXq4B,SAAUd,GAAe5G,EAAqB0H,EAAU/B,KACxDvL,QAASwM,GAAe5G,EAAqB5F,EAASmN,KACtD5iF,UAAW,GACVsiF,EAAQtD,IAEyC2D,EACtD,CACF,GAAG,CAAC3D,EAAUlP,EAAQ1U,EAAU4lB,GAAUjxB,IAC1C,OAAOyiB,GAAcA,GAAc,CAAC,EAAGznC,GAAQ,CAAC,EAAG,CACjD8yC,UAAWA,IAAc9tB,EACzBqyB,aAAcA,GACdS,cAAeA,GACf/D,QAASA,EACTE,SAAUA,EACVthE,KAAMukE,GAAehB,KAEzB,CAOA,SAAS9B,GAAQp0C,EAAOzjC,GAEtB,OAAQA,EAAO1zC,MACb,IAAK,QACH,OAAO4+G,GAAcA,GAAc,CAAC,EAAGznC,GAAQ,CAAC,EAAG,CACjD8yC,WAAW,IAGf,IAAK,OACH,OAAOrL,GAAcA,GAAc,CAAC,EAAGznC,GAAQ,CAAC,EAAG,CACjD8yC,WAAW,IAGf,IAAK,aACH,OAAOrL,GAAcA,GAAc,CAAC,EAAGoL,IAAe,CAAC,EAAG,CACxDE,oBAAoB,IAGxB,IAAK,cACH,OAAOtL,GAAcA,GAAc,CAAC,EAAGznC,GAAQ,CAAC,EAAG,CACjD+yC,oBAAoB,IAGxB,IAAK,kBACH,OAAOtL,GAAcA,GAAc,CAAC,EAAGznC,GAAQ,CAAC,EAAG,CACjDgzC,aAAcz2E,EAAOy2E,aACrBC,aAAc12E,EAAO02E,aACrBC,aAAc32E,EAAO22E,eAGzB,IAAK,WACH,OAAOzL,GAAcA,GAAc,CAAC,EAAGznC,GAAQ,CAAC,EAAG,CACjD33E,cAAek0C,EAAOl0C,cACtB8qH,eAAgB52E,EAAO42E,iBAG3B,IAAK,QACH,OAAO1L,GAAc,CAAC,EAAGoL,IAE3B,QACE,OAAO7yC,EAEb,CAEA,SAAS6zC,KAAQ,aCx8BjBpqH,EAAOtB,QAAU,WACf,IAAI6B,EAAYG,SAASE,eACzB,IAAKL,EAAUiuH,WACb,OAAO,WAAa,EAKtB,IAHA,IAAIC,EAAS/tH,SAAS8tC,cAElBkgF,EAAS,GACJ5oH,EAAI,EAAGA,EAAIvF,EAAUiuH,WAAY1oH,IACxC4oH,EAAO5lH,KAAKvI,EAAUouH,WAAW7oH,IAGnC,OAAQ2oH,EAAOG,QAAQC,eACrB,IAAK,QACL,IAAK,WACHJ,EAAO/xE,OACP,MAEF,QACE+xE,EAAS,KAKb,OADAluH,EAAU6C,kBACH,WACc,UAAnB7C,EAAUnB,MACVmB,EAAU6C,kBAEL7C,EAAUiuH,YACbE,EAAOzQ,SAAQ,SAAS39G,GACtBC,EAAUkC,SAASnC,EACrB,IAGFmuH,GACAA,EAAOhgF,OACT,CACF,0BCtBA,IAEIqgF,EAAU,WAAY,EA2C1B9uH,EAAOtB,QAAUowH,aCzDjB9uH,EAAOtB,QAJP,SAA2BiD,EAAGyc,EAAGnD,GAC/B,GAAI,mBAAqBtZ,EAAIA,IAAMyc,EAAIzc,EAAEq1B,IAAI5Y,GAAI,OAAOta,UAAUC,OAAS,EAAIqa,EAAInD,EACnF,MAAM,IAAI6kG,UAAU,gDACtB,EACoC9/G,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,mBCCzGsB,EAAOtB,QALP,SAAoC6I,EAAKwnH,GACvC,GAAIA,EAAkB/3F,IAAIzvB,GACxB,MAAM,IAAIu4G,UAAU,iEAExB,EAC6C9/G,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,yBCLlH,IAAIswH,EAAmB,EAAQ,OAI/BhvH,EAAOtB,QAHP,SAAgCyxD,EAAG1zC,GACjC,OAAO0zC,EAAE9oD,IAAI2nH,EAAiB7+D,EAAG1zC,GACnC,EACyCzc,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,yBCJ9G,IAAIuwH,EAA4B,EAAQ,OAKxCjvH,EAAOtB,QAJP,SAAoC6I,EAAK2nH,EAAYvnH,GACnDsnH,EAA0B1nH,EAAK2nH,GAC/BA,EAAWv/F,IAAIpoB,EAAKI,EACtB,EAC6C3H,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,yBCLlH,IAAIswH,EAAmB,EAAQ,OAI/BhvH,EAAOtB,QAHP,SAAgCyxD,EAAG1zC,EAAGrB,GACpC,OAAO+0C,EAAExgC,IAAIq/F,EAAiB7+D,EAAG1zC,GAAIrB,GAAIA,CAC3C,EACyCpb,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,uBCJ9G,IAAIswH,EAAmB,EAAQ,OAI/BhvH,EAAOtB,QAHP,SAA6ByxD,EAAG/0C,EAAGqB,GACjC,OAAOA,EAAEuyG,EAAiB7+D,EAAG/0C,GAC/B,EACsCpb,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,yBCJ3G,IAAIuwH,EAA4B,EAAQ,OAKxCjvH,EAAOtB,QAJP,SAAqC6I,EAAK4nH,GACxCF,EAA0B1nH,EAAK4nH,GAC/BA,EAAW99F,IAAI9pB,EACjB,EAC8CvH,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,yBCLnH,IAAI0wH,EAAgB,EAAQ,OAe5BpvH,EAAOtB,QAdP,SAAyB6I,EAAKG,EAAKC,GAYjC,OAXAD,EAAM0nH,EAAc1nH,MACTH,EACTC,OAAO6Q,eAAe9Q,EAAKG,EAAK,CAC9BC,MAAOA,EACP2Q,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZjR,EAAIG,GAAOC,EAENJ,CACT,EACkCvH,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,yBCfvG,IAAIu+G,EAAU,iBAWdj9G,EAAOtB,QAVP,SAAqB0f,EAAGhD,GACtB,GAAI,UAAY6hG,EAAQ7+F,KAAOA,EAAG,OAAOA,EACzC,IAAIzc,EAAIyc,EAAEs3D,OAAO25C,aACjB,QAAI,IAAW1tH,EAAG,CAChB,IAAImE,EAAInE,EAAEoZ,KAAKqD,EAAGhD,GAAK,WACvB,GAAI,UAAY6hG,EAAQn3G,GAAI,OAAOA,EACnC,MAAM,IAAIg6G,UAAU,+CACtB,CACA,OAAQ,WAAa1kG,EAAIpT,OAASF,QAAQsW,EAC5C,EAC8Bpe,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,yBCXnG,IAAIu+G,EAAU,iBACVoS,EAAc,EAAQ,OAK1BrvH,EAAOtB,QAJP,SAAuB0f,GACrB,IAAItY,EAAIupH,EAAYjxG,EAAG,UACvB,MAAO,UAAY6+F,EAAQn3G,GAAKA,EAAIA,EAAI,EAC1C,EACgC9F,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,mBCNrG,SAASu+G,EAAQ6B,GAGf,OAAQ9+G,EAAOtB,QAAUu+G,EAAU,mBAAqBvnC,QAAU,iBAAmBA,OAAOwnC,SAAW,SAAU4B,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBppC,QAAUopC,EAAEnmG,cAAgB+8D,QAAUopC,IAAMppC,OAAO98D,UAAY,gBAAkBkmG,CACpH,EAAG9+G,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,QAAUu+G,EAAQ6B,EAC5F,CACA9+G,EAAOtB,QAAUu+G,EAASj9G,EAAOtB,QAAQ8+G,YAAa,EAAMx9G,EAAOtB,QAAiB,QAAIsB,EAAOtB,sCCThF,SAAS4wH,EAAuBnwG,GAC3C,IAAI6zD,GAAc,EAMlB,MAAO,CACH7zD,QANiB,IAAIC,SAAQ,SAAUC,EAASC,GAChDH,EACKsG,MAAK,SAAU9d,GAAS,OAAQqrE,GAAe3zD,EAAQ1X,EAAQ,IAC/Dof,OAAM,SAAUlkB,GAAS,OAAQmwE,GAAe1zD,EAAOzc,EAAQ,GACxE,IAGI8wB,OAAQ,WACJq/C,GAAc,CAClB,EAER,kECbA,IAAImvC,EAAgD,SAAUC,EAAIp9B,EAAMq9B,GACpE,GAAIA,GAA6B,IAArBv+G,UAAUC,OAAc,IAAK,IAA4Bm+G,EAAxBp8G,EAAI,EAAGw8G,EAAIt9B,EAAKjhF,OAAY+B,EAAIw8G,EAAGx8G,KACxEo8G,GAAQp8G,KAAKk/E,IACRk9B,IAAIA,EAAKpjH,MAAM8Z,UAAUsD,MAAMnB,KAAKiqE,EAAM,EAAGl/E,IAClDo8G,EAAGp8G,GAAKk/E,EAAKl/E,IAGrB,OAAOs8G,EAAG/9G,OAAO69G,GAAMpjH,MAAM8Z,UAAUsD,MAAMnB,KAAKiqE,GACtD,EAmFWuqC,EAAYpN,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAjFtP,CAAC,SAAU,QAAS,YAiFuP,GAhFzQ,CAC3B,mBACA,qBACA,wBA6E8T,GA3EzS,CAAC,UAAW,WA2EiT,GA1E9T,CAAC,UAAW,YAAa,UAAW,aA0E6S,GAzEhV,CAAC,SAAU,YAyEyV,GAxEjW,CAAC,YAAa,aAAc,YAwE4V,GAvE3X,CACrB,UACA,YACA,mBACA,mBACA,YACA,cACA,UACA,UACA,eACA,mBACA,cACA,UACA,SACA,YACA,aACA,eACA,WACA,YACA,YACA,YACA,eACA,iBACA,cAgDoa,GA9C/Y,CACrB,UACA,gBACA,gBACA,cACA,eACA,eACA,cACA,aACA,cACA,cAoCwb,GAlCpa,CACpB,SACA,YACA,cACA,aACA,cACA,aACA,cACA,WA0B2c,GAxBlb,CAAC,aAwByc,GAvB9c,CAAC,gBAAiB,aAAc,cAAe,iBAuBmb,GAtBhe,CACvB,gBACA,gBACA,cACA,kBACA,sBACA,uBACA,iBACA,iBACA,gBACA,iBAY6gB,GAV3f,CAAC,aAU2gB,GATzgB,CAAC,YAS4hB,GARzhB,CACzB,mBACA,iBACA,yBAK0kB,GAHhjB,CAAC,oBAGwkB,GAD7kB,CAAC,aACimB,GAFnmB,CAAC,aAEsnB,GAOjoB,SAASqN,EAAe7Q,EAAO8Q,GAC1C,IAAIC,EAAa,CAAC,EAelB,OAdAH,EAAUtR,SAAQ,SAAUpc,GACxB,IAAI8tB,EAAehR,EAAM9c,GACpB8tB,IAIDD,EAAW7tB,GADX4tB,EACyB,SAAUn6F,GAC/B,OAAOq6F,EAAar6F,EAAOm6F,EAAQ5tB,GACvC,EAGwB8tB,EAEhC,IACOD,CACX,iICnHI14F,EAAMxvB,OAAOoR,UAAUmhB,eAE3B,SAAS61F,EAAK1yC,EAAM2yC,EAAKnoH,GACxB,IAAKA,KAAOw1E,EAAKt1E,OAChB,GAAIkoH,EAAOpoH,EAAKmoH,GAAM,OAAOnoH,CAE/B,CAEO,SAASooH,EAAOC,EAAKC,GAC3B,IAAIC,EAAMpsC,EAAKtW,EACf,GAAIwiD,IAAQC,EAAK,OAAO,EAExB,GAAID,GAAOC,IAAQC,EAAKF,EAAIp3G,eAAiBq3G,EAAIr3G,YAAa,CAC7D,GAAIs3G,IAASprH,KAAM,OAAOkrH,EAAIG,YAAcF,EAAIE,UAChD,GAAID,IAASxkE,OAAQ,OAAOskE,EAAIhrH,aAAeirH,EAAIjrH,WAEnD,GAAIkrH,IAASnxH,MAAO,CACnB,IAAK+kF,EAAIksC,EAAIhsH,UAAYisH,EAAIjsH,OAC5B,KAAO8/E,KAASisC,EAAOC,EAAIlsC,GAAMmsC,EAAInsC,MAEtC,OAAgB,IAATA,CACR,CAEA,GAAIosC,IAAS7+F,IAAK,CACjB,GAAI2+F,EAAIx9F,OAASy9F,EAAIz9F,KACpB,OAAO,EAER,IAAKsxD,KAAOksC,EAAK,CAEhB,IADAxiD,EAAMsW,IACoB,kBAARtW,KACjBA,EAAMqiD,EAAKI,EAAKziD,IACN,OAAO,EAElB,IAAKyiD,EAAIh5F,IAAIu2C,GAAM,OAAO,CAC3B,CACA,OAAO,CACR,CAEA,GAAI0iD,IAASlpH,IAAK,CACjB,GAAIgpH,EAAIx9F,OAASy9F,EAAIz9F,KACpB,OAAO,EAER,IAAKsxD,KAAOksC,EAAK,CAEhB,IADAxiD,EAAMsW,EAAI,KACgB,kBAARtW,KACjBA,EAAMqiD,EAAKI,EAAKziD,IACN,OAAO,EAElB,IAAKuiD,EAAOjsC,EAAI,GAAImsC,EAAI3oH,IAAIkmE,IAC3B,OAAO,CAET,CACA,OAAO,CACR,CAEA,GAAI0iD,IAASt1F,YACZo1F,EAAM,IAAInqH,WAAWmqH,GACrBC,EAAM,IAAIpqH,WAAWoqH,QACf,GAAIC,IAASE,SAAU,CAC7B,IAAKtsC,EAAIksC,EAAIvpH,cAAgBwpH,EAAIxpH,WAChC,KAAOq9E,KAASksC,EAAIK,QAAQvsC,KAASmsC,EAAII,QAAQvsC,KAElD,OAAgB,IAATA,CACR,CAEA,GAAIlpD,YAAY01F,OAAON,GAAM,CAC5B,IAAKlsC,EAAIksC,EAAIvpH,cAAgBwpH,EAAIxpH,WAChC,KAAOq9E,KAASksC,EAAIlsC,KAASmsC,EAAInsC,KAElC,OAAgB,IAATA,CACR,CAEA,IAAKosC,GAAuB,kBAARF,EAAkB,CAErC,IAAKE,KADLpsC,EAAM,EACOksC,EAAK,CACjB,GAAI/4F,EAAIjc,KAAKg1G,EAAKE,MAAWpsC,IAAQ7sD,EAAIjc,KAAKi1G,EAAKC,GAAO,OAAO,EACjE,KAAMA,KAAQD,KAASF,EAAOC,EAAIE,GAAOD,EAAIC,IAAQ,OAAO,CAC7D,CACA,OAAOzoH,OAAOI,KAAKooH,GAAKjsH,SAAW8/E,CACpC,CACD,CAEA,OAAOksC,IAAQA,GAAOC,IAAQA,CAC/B,sCCnEe,MAAMM,EACjB33G,WAAAA,GACID,KAAK63G,qBAAsB,EAC3B73G,KAAK83G,qBAAkBxsH,EACvB0U,KAAK+3G,wBAAqBzsH,EAC1B0U,KAAKg4G,sBAAuB,EAC5Bh4G,KAAK+jC,iBAAcz4C,EACnB0U,KAAKi4G,eAAY3sH,CACrB,CACA4sH,WAAAA,CAAYn0E,GACR/jC,KAAK+jC,YAAcA,CACvB,CACAo0E,SAAAA,CAAUF,GACNj4G,KAAKi4G,UAAYA,CACrB,CACAG,kBAAAA,CAAmBN,GACf93G,KAAK83G,gBAAkBA,CAC3B,CACAO,qBAAAA,CAAsBN,GAClB/3G,KAAK+3G,mBAAqBA,CAC9B,CACAO,UAAAA,GACI,CAEJ,cAAIC,GACA,OAAOv4G,KAAK+jC,YAAc/jC,KAAK+jC,YAAYzyB,SAAW,CAC1D,CACA,QAAI8P,GAEA,OADAo3F,EAAAA,EAAAA,GAAUx4G,KAAKi4G,UAAW,kCACnBj4G,KAAKi4G,UAAUQ,mBAAqB,CAC/C,CACA,QAAIr3F,CAAKnyB,IACLupH,EAAAA,EAAAA,GAAUx4G,KAAKi4G,UAAW,kCAC1Bj4G,KAAKi4G,UAAUQ,kBAAoBxpH,CACvC,CAEA,YAAIgmB,GACA,OAAO,CACX,CACA,YAAIA,CAAShmB,GACT,CAEJ+3F,eAAAA,CAAgBtoC,GACZ,OAAO,IAAIh4C,SAASC,KAChB6xG,EAAAA,EAAAA,GAAUx4G,KAAK+jC,YAAa,6BAC5By0E,EAAAA,EAAAA,GAAU95D,EAAM,iCACI,kBAATA,EACP1+C,KAAK+jC,YAAY/xB,eAAe0sC,GAAM3xC,KAAKpG,GAEtCvgB,MAAMC,QAAQq4D,GACnB/3C,EAAQ+3C,GAGRA,EAAK3xC,KAAKpG,EACd,IACDoG,MAAM2rG,KACLF,EAAAA,EAAAA,GAAUpyH,MAAMC,QAAQqyH,GAAe,IAAF/sH,OAAM+sH,EAAY,wCACvD,MAAMC,EAAUD,EAAa,GAC7B,IAAIhyG,SAASC,KACT6xG,EAAAA,EAAAA,GAAUx4G,KAAK+jC,YAAa,4BACxB40E,aAAmB7pH,OACnBkR,KAAK+jC,YACAlyB,aAAa8mG,GACb5rG,MAAMgH,IACPpN,EAAQoN,EAAU,IAEjB1F,OAAM,MACPmqG,EAAAA,EAAAA,IAAU,EAAO,IAAF7sH,OAAMgtH,EAAO,oCAAmC,IAG3C,kBAAZA,EACZhyG,EAAQgyG,IAGRH,EAAAA,EAAAA,IAAU,EAAO,IAAF7sH,OAAMgtH,EAAO,2CAChC,IACD5rG,MAAMgH,IACL,MAAMnC,EAAamC,EAAY,GAC/BykG,EAAAA,EAAAA,GAAUx4G,KAAKi4G,UAAW,mCAC1BO,EAAAA,EAAAA,GAAU5mG,GAAc,GAAKA,GAAc5R,KAAKu4G,WAAY,IAAF5sH,OAAMimB,EAAU,kCAC1E5R,KAAKi4G,UAAUW,mBAAmB,CAC9Bl6D,KAAMg6D,EACN3kG,YACAnC,cACF,GACJ,GAEV,CACAinG,UAAAA,CAAWn6D,GACP1+C,KAAKgnF,gBAAgBtoC,EACzB,CACAo6D,QAAAA,CAASlnG,GACL,MAAMmC,EAAYnC,EAAa,GAC/B4mG,EAAAA,EAAAA,GAAUx4G,KAAKi4G,UAAW,mCAC1BO,EAAAA,EAAAA,GAAU5mG,GAAc,GAAKA,GAAc5R,KAAKu4G,WAAY,IAAF5sH,OAAMimB,EAAU,kCAC1E5R,KAAKi4G,UAAUW,mBAAmB,CAC9B7kG,YACAnC,cAER,CACAq0E,iBAAAA,CAAkBF,EAAM76F,EAAKg7F,GACzBH,EAAKp3E,KAAOzjB,EACZ66F,EAAKgzB,IAAM/4G,KAAK83G,iBAvGC,+BAwGjB/xB,EAAK91D,OAASi2D,EAAY,SAAWlmF,KAAK+3G,oBAAsB,EACpE,CACAjxB,kBAAAA,GACI,MAAO,GACX,CACAI,YAAAA,GACI,MAAO,GACX,CACA8xB,OAAAA,GACI,CAEJ7xB,kBAAAA,GACI,CAEJ8xB,YAAAA,GACI,CAEJC,aAAAA,GACI,OAAO,CACX,CACAC,YAAAA,GACI,OAAO,CACX,CACA7wB,kBAAAA,GACI,EC9IR,MAIA,EAJ0B,CACtBhpF,cAAe,EACfC,mBAAoB,6BCFpBopG,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIpiG,WAAU,SAAUC,EAASC,GAC/C,SAASoiG,EAAU/5G,GAAS,IAAM8/C,EAAKg6D,EAAUjqE,KAAK7vC,GAAS,CAAE,MAAOhG,GAAK2d,EAAO3d,EAAI,CAAE,CAC1F,SAASggH,EAASh6G,GAAS,IAAM8/C,EAAKg6D,EAAiB,MAAE95G,GAAS,CAAE,MAAOhG,GAAK2d,EAAO3d,EAAI,CAAE,CAC7F,SAAS8lD,EAAK/Q,GAJlB,IAAe/uC,EAIa+uC,EAAOvjB,KAAO9T,EAAQq3B,EAAO/uC,QAJ1CA,EAIyD+uC,EAAO/uC,MAJhDA,aAAiB65G,EAAI75G,EAAQ,IAAI65G,GAAE,SAAUniG,GAAWA,EAAQ1X,EAAQ,KAIjB8d,KAAKi8F,EAAWC,EAAW,CAC7Gl6D,GAAMg6D,EAAYA,EAAU1oG,MAAMuoG,EAASC,GAAc,KAAK/pE,OAClE,GACJ,EACIs6E,EAAkC,SAAU3hE,EAAGxuD,GAC/C,IAAIyc,EAAI,CAAC,EACT,IAAK,IAAIvC,KAAKs0C,EAAO3oD,OAAOoR,UAAUmhB,eAAehf,KAAKo1C,EAAGt0C,IAAMla,EAAEu3E,QAAQr9D,GAAK,IAC9EuC,EAAEvC,GAAKs0C,EAAEt0C,IACb,GAAS,MAALs0C,GAAqD,oBAAjC3oD,OAAOo2G,sBACtB,KAAI93G,EAAI,EAAb,IAAgB+V,EAAIrU,OAAOo2G,sBAAsBztD,GAAIrqD,EAAI+V,EAAE9X,OAAQ+B,IAC3DnE,EAAEu3E,QAAQr9D,EAAE/V,IAAM,GAAK0B,OAAOoR,UAAU6lG,qBAAqB1jG,KAAKo1C,EAAGt0C,EAAE/V,MACvEsY,EAAEvC,EAAE/V,IAAMqqD,EAAEt0C,EAAE/V,IAF4B,CAItD,OAAOsY,CACX,EAgBA,MAAM,sBAAEuE,GAA0BovG,EAAAA,EAC5BC,EAAoBA,CAAC9gG,EAAUzR,KACjC,OAAQA,GACJ,KAAK1H,EAAkBC,cAGnBkZ,EADiBhuB,OAAO,8CAExB,MAEJ,KAAK6U,EAAkBE,mBAGnBiZ,EADiBhuB,OAAO,wCAExB,MAGR,EAEJ,SAAS+uH,EAAkBtzH,GACvB,MAAwB,kBAATA,GACF,OAATA,IACC,SAAUA,GAAQ,UAAWA,GAAQ,QAASA,EACvD,CAIA,MAkQA,GAlQiB4oH,EAAAA,EAAAA,aAAW,SAAkBnE,EAAI54F,GAC9C,IAAI,SAAEiE,EAAQ,UAAE6c,EAAS,MAAEzoC,EAAQ,2BAA0B,gBAAE2tH,EAAe,mBAAEC,EAAkB,KAAE9xH,EAAI,SAAE6rH,EAAQ,mBAAEzxB,EAAkB,QAAEm5B,EAAU,oBAAc,OAAEC,EAAS,yBAAwB,YAAEC,EAAaC,YAAaC,EAAgB,eAAEC,EAAgBC,cAAeC,EAAkB,WAAE7qG,EAAaoqG,EAAmBU,cAAeC,EAAoBC,gBAAiBC,EAAoB,QAAE3yH,EAAO,WAAE4yH,EAAU,OAAExlG,GAAW81F,EAAI2P,EAAajB,EAAO1O,EAAI,CAAC,WAAY,YAAa,QAAS,kBAAmB,qBAAsB,OAAQ,WAAY,qBAAsB,UAAW,SAAU,cAAe,cAAe,iBAAkB,gBAAiB,aAAc,gBAAiB,kBAAmB,UAAW,aAAc,WACjuB,MAAO4P,EAAaC,IAAkBC,EAAAA,EAAAA,MAC9BvrH,MAAOuf,EAAQrkB,MAAOswH,GAAgBH,GACvCI,EAAUC,IAAeH,EAAAA,EAAAA,MACxBvrH,MAAO2rH,EAAKzwH,MAAO0wH,GAAaH,EAClCv6B,GAAc0xB,EAAAA,EAAAA,QAAO,IAAI+F,GACzBkD,GAAQjJ,EAAAA,EAAAA,QAAO,IACfkJ,GAAWlJ,EAAAA,EAAAA,aAAOvmH,GAClB0vH,GAAcnJ,EAAAA,EAAAA,aAAOvmH,GACvBrF,GAAQA,IAAS80H,EAAS5hE,SAAWogE,EAAkBtzH,KACvDmwH,GAASgB,EAAOnxH,EAAM80H,EAAS5hE,SAAU,4KACzC4hE,EAAS5hE,QAAUlzD,GAGnBuB,GAAWA,IAAYwzH,EAAY7hE,UACnCi9D,GAASgB,EAAO5vH,EAASwzH,EAAY7hE,SAAU,kLAC/C6hE,EAAY7hE,QAAU3xD,GAE1B,MAAMo8C,IAASiuE,EAAAA,EAAAA,QAAO,CAElB+G,mBAAqB/4E,IACjB,MAAM,KAAE6e,EAAI,WAAE9sC,EAAU,UAAEmC,EAAYnC,EAAa,GAAMiuB,EAEzD,GAAI65E,EAEA,YADAA,EAAY,CAAEh7D,OAAM3qC,YAAWnC,eAInC,MAAMwP,EAAO05F,EAAM3hE,QAAQplC,GACvBqN,EAEAA,EAAK2P,iBAGTqlF,GAAQ,EAAO,oCAAFzqH,OAAsCimB,EAAU,0PAAyP,KAG9To9F,EAAAA,EAAAA,qBAAoBl9F,GAAK,KAAM,CAC3BquE,cACA26B,QACAl3E,aACA,KAyBJyuE,EAAAA,EAAAA,YAHA,WACIkI,EAAe,CAAE7zH,KAAM,SAC3B,GACuB,CAACT,EAAMs0H,IAC9B,MAAMU,IAAqBxI,EAAAA,EAAAA,cAAY,IAAM9J,EAAU3oG,UAAM,OAAQ,GAAQ,YACzE,IAAK/Z,EACD,OAAO,KAGX,GAAoB,kBAATA,EAAmB,CAC1B,IAAIi1H,EAAAA,EAAAA,IAAUj1H,GAAO,CAEjB,MAAO,CAAE4gB,MADcs0G,EAAAA,EAAAA,IAAoBl1H,GAE/C,CAEA,OADAm1H,EAAAA,EAAAA,MACO,CAAElwH,IAAKjF,EAClB,CAEA,GAAIA,aAAgBgkB,EAChB,MAAO,CAAEriB,MAAO3B,GAGpB,IAAIsjB,EAAAA,EAAAA,IAActjB,GACd,MAAO,CAAE4gB,KAAM5gB,GAMnB,GAAIo1H,EAAAA,KAEIC,EAAAA,EAAAA,IAAOr1H,GAAO,CAEd,MAAO,CAAE4gB,WADU00G,EAAAA,EAAAA,IAAat1H,GAEpC,CAMJ,IAHAuyH,EAAAA,EAAAA,GAA0B,kBAATvyH,EAAmB,oFACpCuyH,EAAAA,EAAAA,GAAUe,EAAkBtzH,GAAO,+DAE/B,QAASA,GAA4B,kBAAbA,EAAKiF,IAAkB,CAC/C,IAAIgwH,EAAAA,EAAAA,IAAUj1H,EAAKiF,KAAM,CACrB,MAAM,IAAEA,GAAQjF,EAAMu1H,EAAcpC,EAAOnzH,EAAM,CAAC,QAC5Cw1H,GAAiBN,EAAAA,EAAAA,IAAoBjwH,GAC3C,OAAO4D,OAAO4rB,OAAO,CAAE7T,KAAM40G,GAAkBD,EACnD,EACAJ,EAAAA,EAAAA,KACJ,CACA,OAAOn1H,CACX,KAAI,CAACA,IA6GL,SAASy1H,GAAa3nG,EAAWjC,GAC7BgpG,EAAM3hE,QAAQplC,GAAajC,CAC/B,CACA,SAAS6pG,GAAe5nG,UACb+mG,EAAM3hE,QAAQplC,EACzB,EAjHAs+F,EAAAA,EAAAA,YAAU,KACN,MAAMuJ,GAAcC,EAAAA,EAAAA,GAAgBZ,MAQpC,OAPAW,EAAYn1G,QACPsG,MAAM+uG,IACPvB,EAAe,CAAE7zH,KAAM,UAAWuI,MAAO6sH,GAAa,IAErDztG,OAAOlkB,IACRowH,EAAe,CAAE7zH,KAAM,SAAUyD,SAAQ,IAEtC,MACH4xH,EAAAA,EAAAA,IAAkBH,EAAY,CACjC,GACF,CAACX,GAAoBV,KACxBlI,EAAAA,EAAAA,YAAU,KACgB,qBAAX7jG,KAGI,IAAXA,EApFA2rG,GACAA,IAOCM,IAILrE,GAAQ,EAAOqE,EAAYpuH,YACvB4tH,GACAA,EAAmBQ,IA0EN,GAIrB,CAACjsG,KA+BD6jG,EAAAA,EAAAA,YAHA,WACIsI,EAAY,CAAEj0H,KAAM,SACxB,GACyB,CAACi0H,EAAansG,KA6BvC6jG,EAAAA,EAAAA,YA5BA,WACI,IAAK7jG,EACD,OAEJ,MAAMwtG,EAAqCltH,OAAO4rB,OAAO5rB,OAAO4rB,OAAO,CAAC,EAAGlzB,GAAU,CAAEga,iBAAiB,IAClGy6G,EAAqBntH,OAAO4rB,OAAO5rB,OAAO4rB,OAAO,CAAC,EAAGlM,GAASwtG,GAC9DE,EAAc7C,EAAAA,EAAMlwG,YAAY8yG,GAClCpC,IACAqC,EAAY/sG,WAAa0qG,GAEzB3qG,IACAgtG,EAAYhtG,WAAaA,GAE7B,MAAMmE,EAAc6oG,EAWpB,OAVA7oG,EAAY5M,QACPsG,MAAMovG,IACPxB,EAAY,CAAEj0H,KAAM,UAAWuI,MAAOktH,GAAU,IAE/C9tG,OAAOlkB,IACJkpB,EAAYrG,WAGhB2tG,EAAY,CAAEj0H,KAAM,SAAUyD,SAAQ,IAEnC,KACHkpB,EAAYjE,SAAS,CAE7B,GAIA,CAAC5nB,EAASmzH,EAAansG,KACvB6jG,EAAAA,EAAAA,YAAU,KACa,qBAARuI,KAGC,IAARA,EA/DCA,IAIDb,GACAA,EAAmBa,GAEvBE,EAAM3hE,QAAU,IAAI/yD,MAAMw0H,EAAItpG,UAC9B6uE,EAAYhnC,QAAQ++D,YAAY0C,IAM3BC,IAILzE,GAAQ,EAAOyE,EAASxuH,YACpButH,GACAA,EAAiBiB,IA+CN,GAInB,CAACD,KAMDvI,EAAAA,EAAAA,YALA,WACIlyB,EAAYhnC,QAAQg/D,UAAUv0E,GAAOuV,SACrCgnC,EAAYhnC,QAAQi/D,mBAAmBN,GACvC33B,EAAYhnC,QAAQk/D,sBAAsBN,EAC9C,GAC4B,CAACD,EAAiBC,IAO9C,MAAMqE,IAAejL,EAAAA,EAAAA,UAAQ,KAAM,CAC/B9wB,qBACAF,YAAaA,EAAYhnC,QACzBugE,cACAkB,MACAc,gBACAtB,aACAxlG,SACA+mG,qBACA,CAACt7B,EAAoBq5B,EAAakB,EAAKR,EAAYxlG,IACjDoiG,IAAa7F,EAAAA,EAAAA,UAAQ,KAAM2F,EAAAA,EAAAA,IAAeuD,GAAY,IAAMO,KAAM,CAACP,EAAYO,IAgBrF,OAAQyB,EAAAA,EAAAA,KAAK,MAAOvtH,OAAO4rB,OAAO,CAAEkY,WAAW0pF,EAAAA,EAAAA,GAAK,sBAAuB1pF,GAAY9gB,IAAKggG,EAAUxpH,MAAO,CACrG,iBAAoB,MACnB0uH,GAAY,CAAEjhG,SAbd9vB,OAGOqF,IAARsvH,GAA6B,OAARA,GACbyB,EAAAA,EAAAA,KAAKE,EAAAA,EAAS,CAAE71H,KAAM,UAAWqvB,SAA6B,oBAAZyjG,EAAyBA,IAAYA,KAEvF,IAARoB,GACOyB,EAAAA,EAAAA,KAAKE,EAAAA,EAAS,CAAE71H,KAAM,QAASqvB,SAA2B,oBAAV5rB,EAAuBA,IAAUA,KAVrFkyH,EAAAA,EAAAA,KAAKG,EAAAA,EAAgBC,SAAU,CAAExtH,MAAOmtH,GAAcrmG,SAAUA,KAI5DsmG,EAAAA,EAAAA,KAAKE,EAAAA,EAAS,CAAE71H,KAAM,UAAWqvB,SAA4B,oBAAX0jG,EAAwBA,IAAWA,MAaxG,mDC7TA,SAAeiD,WAAAA,eAAc,oECDd,SAASH,EAAO1uG,GAAqB,IAApB,SAAEkI,EAAQ,KAAErvB,GAAMmnB,EAC9C,OAAOwuG,EAAAA,EAAAA,KAAK,MAAO,CAAEzpF,UAAW,0CAAFjnC,OAA4CjF,GAAQqvB,SAAUA,GAChG,4GCSe,SAAS4mG,IAEpB,IADA,IAAIC,EAAY,GACPtQ,EAAK,EAAGA,EAAKlhH,UAAUC,OAAQihH,IACpCsQ,EAAUtQ,GAAMlhH,UAAUkhH,GAE9B,IAAIuQ,EAAoBD,EAAUtvE,OAAOw5D,SACzC,OAAI+V,EAAkBxxH,QAAU,EACbwxH,EAAkB,IACd,KAEhB,SAAoB/qG,GACvB+qG,EAAkBtX,SAAQ,SAAUuM,GACR,oBAAbA,EACPA,EAAShgG,GAEJggG,IACLA,EAAS34D,QAAUrnC,EAE3B,GACJ,CACJ,0BC9BA,SAAe4qG,EAAAA,EAAAA,eAAc,gCCDtB,MAAMI,EAAwB,CAEjCC,SAAU,KACVC,iBAAkB,KAElBC,KAAM,QACNC,KAAM,QACNC,IAAK,QACLC,MAAO,OACPC,UAAW,OAEXvU,EAAG,KAEHwU,EAAG,UACHC,MAAO,KACPC,OAAQ,OAERC,IAAK,QAELC,IAAK,KACLC,KAAM,KACNC,GAAI,KACJC,OAAQ,KACRC,KAAM,OACNC,MAAO,OACPC,KAAM,OAENC,KAAM,KACNC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,QAAS,KACTC,GAAI,KACJjlH,GAAI,KAEJklH,EAAG,OACHC,GAAI,WACJC,MAAO,KAEPC,MAAO,QACPC,GAAI,MACJC,GAAI,eACJC,GAAI,OACJC,MAAO,eACPC,MAAO,KACPC,MAAO,KAEPC,QAAS,KAETC,OAAQ,SAERC,QAAS,KAETC,SAAU,MAEDC,EAAkB,WCpDxB,SAASC,EAAiBjzC,GAC7B,MAAO,aAAcA,CACzB,CACO,SAASkzC,EAAqClzC,GACjD,QAAKizC,EAAiBjzC,KAGU,IAAzBA,EAAKt2D,SAAS1qB,QAAgB,KAAKghF,EAAKt2D,UAAY,OAAQs2D,EAAKt2D,SAAS,GACrF,CACO,SAASypG,EAAkBnzC,GAC9B,MAAMzhC,EAAa,CAAC,EACpB,GAAI00E,EAAiBjzC,GAAO,CACxB,MAAM,KAAEgpC,GAAShpC,EACX7rC,EAAU60E,EAAK3pH,MAAM2zH,GAC3B,GAAI7+E,EACAoK,EAAWyqE,KAAO,UAClBzqE,EAAW,cAAgBx7C,OAAOoxC,EAAQ,SAEzC,GArBN,SAAmB60E,GACtB,OAAOA,KAAQyH,CACnB,CAmBiB2C,CAAUpK,GAAO,CACtB,MAAMqK,EAAW5C,EAAsBzH,GACnCqK,IACA90E,EAAWyqE,KAAOqK,EAE1B,CACJ,CACA,OAAO90E,CACX,CACO,SAAS+0E,EAAkBtzC,GAC9B,MAAMzhC,EAAa,CAAC,EACpB,GAAI00E,EAAiBjzC,IAOjB,QANiB/gF,IAAb+gF,EAAKkc,MACL39C,EAAW,cAAgByhC,EAAKkc,UAElBj9F,IAAd+gF,EAAKuzC,OACLh1E,EAAWg1E,KAAOvzC,EAAKuzC,MAEvBL,EAAqClzC,GAAO,CAC5C,MAAOgG,GAAShG,EAAKt2D,SACrB,GAAIs8D,EAAO,CACP,MAAMwtC,EAAkBF,EAAkBttC,GAC1C,OAAOvjF,OAAO4rB,OAAO5rB,OAAO4rB,OAAO,CAAC,EAAGkwB,GAAai1E,EACxD,CACJ,MAGI,OAAQxzC,IACRzhC,EAAW,aAAeyhC,EAAKp6D,IAGvC,OAAO24B,CACX,CACO,SAASk1E,EAAczzC,GAC1B,OAAKA,EAGEv9E,OAAO4rB,OAAO5rB,OAAO4rB,OAAO,CAAC,EAAG8kG,EAAkBnzC,IAAQszC,EAAkBtzC,IAFxE,IAGf,CCzDe,SAAS0zC,EAAclyG,GAAsB,IAArB,UAAE+kB,EAAS,KAAEy5C,GAAMx+D,EACtD,MAAM+8B,GAAaumE,EAAAA,EAAAA,UAAQ,IAAM2O,EAAczzC,IAAO,CAACA,IACjDt2D,GAAWo7F,EAAAA,EAAAA,UAAQ,IAChBmO,EAAiBjzC,GAGlBkzC,EAAqClzC,GAC9B,KAEJA,EAAKt2D,SAASnnB,KAAI,CAACyjF,EAAO0c,KAG7BstB,EAAAA,EAAAA,KAAK0D,EAAgB,CAAE1zC,KAAMgG,GAAS0c,KAR/B,MAUZ,CAAC1iB,IACJ,OAAQgwC,EAAAA,EAAAA,KAAK,OAAQvtH,OAAO4rB,OAAO,CAAEkY,UAAWA,GAAagY,EAAY,CAAE70B,SAAUA,IACzF,CCjBe,SAASiqG,IACpB,OAAOC,EAAAA,EAAAA,YAAWC,EACtB,2BCKe,SAASC,IACpB,MAAMC,EAAcJ,KACpBxH,EAAAA,EAAAA,GAAU4H,EAAa,gCACvB,MAAQC,qBAAsBC,EAA2BC,uBAAwBC,GAAiCJ,GAC3GK,EAAiBC,IAAsBlG,EAAAA,EAAAA,MACtCvrH,MAAO0xH,EAAYx2H,MAAOy2H,GAAoBH,GAChD,mBAAEI,EAAkB,KAAEz/F,GAASg/F,EAyDrC,OAlCA/N,EAAAA,EAAAA,YAHA,WACIqO,EAAmB,CAAEh6H,KAAM,SAC/B,GAC4B,CAACg6H,EAAoBt/F,KAoBjDixF,EAAAA,EAAAA,YAnBA,WACI,GAAIwO,EAEA,OAEJ,IAAKz/F,EACD,OAEJ,MAAMw6F,GAAcC,EAAAA,EAAAA,GAAgBz6F,EAAKzG,iBACnCmmG,EAAclF,EAQpB,OAPAA,EAAYn1G,QACPsG,MAAMg0G,IACPL,EAAmB,CAAEh6H,KAAM,UAAWuI,MAAO8xH,GAAiB,IAE7D1yG,OAAOlkB,IACRu2H,EAAmB,CAAEh6H,KAAM,SAAUyD,SAAQ,IAE1C,KAAM4xH,EAAAA,EAAAA,IAAkB+E,EACnC,GAC0B,CAACD,EAAoBz/F,EAAMs/F,KACrDrO,EAAAA,EAAAA,YAAU,UACa/mH,IAAfq1H,KAGe,IAAfA,EA9CCA,GAIDH,GACAA,EAA4BG,GAI3BC,IAILxK,GAAQ,EAAOwK,EAAgBv0H,YAC3Bi0H,GACAA,EAA0BM,IAmCf,GAInB,CAACD,IACIA,GAGEtE,EAAAA,EAAAA,KAAK0D,EAAgB,CAAEntF,UAAW,yCAA0Cy5C,KAAMs0C,IAF9E,IAGf,CClEA,MAAMK,EAAkB3H,EAAAA,EAAM1nH,eACf,SAASsvH,EAAWhb,GAC/B,MAAMma,EAAcJ,KACpBxH,EAAAA,EAAAA,GAAU4H,EAAa,gCACvB,MAAMc,EAAcpyH,OAAO4rB,OAAO5rB,OAAO4rB,OAAO,CAAC,EAAG0lG,GAAcna,IAC5D,WAAEkb,EAAU,iBAAEC,EAAgB,iBAAEr+D,GAAmBs+D,EAAAA,EAAAA,MAAuBC,cAAeC,EAAoBC,gBAAiBC,EAAoB,KAAErgG,EAAI,YAAEk/D,EAAW,gBAAEohC,EAAe,OAAE9sG,EAAM,MAAEI,GAAWksG,GAC3M,UAAES,GAAc1b,GACtBuS,EAAAA,EAAAA,GAAUp3F,EAAM,+DAChB,MAAMwgG,GAAgB/P,EAAAA,EAAAA,QAAO,MAgB7B,SAASyP,EAAcn3H,IACf03H,EAAAA,EAAAA,IAAkB13H,KAGtBisH,GAAQ,EAAOjsH,EAAMkC,YACjBk1H,GACAA,EAAmBp3H,GAE3B,CACA,MAAM23H,GAAiB3Q,EAAAA,EAAAA,UAAQ,IAAM/vF,EAAKrM,YAAY,CAAEC,MAAOA,EAAQ+tC,EAAkB9tC,SAAUL,KAAW,CAACmuC,EAAkB3hC,EAAMxM,EAAQI,IACzIqB,GAAW86F,EAAAA,EAAAA,UAAQ,IAAM/vF,EAAKrM,YAAY,CAAEC,QAAOC,SAAUL,KAAW,CAACwM,EAAMxM,EAAQI,KAkC7Fq9F,EAAAA,EAAAA,YAjCA,WACI,IAAKjxF,EACD,OAGJA,EAAKlO,UACL,MAAQimC,QAAS9yB,GAAWu7F,EAC5B,IAAKv7F,EACD,OAEJA,EAAO9B,MAAQu9F,EAAev9F,MAC9B8B,EAAO7B,OAASs9F,EAAet9F,OAC/B6B,EAAO/9B,MAAMi8B,MAAQ,GAAH54B,OAAM0B,KAAKC,MAAM+oB,EAASkO,OAAM,MAClD8B,EAAO/9B,MAAMk8B,OAAS,GAAH74B,OAAM0B,KAAKC,MAAM+oB,EAASmO,QAAO,MACpD6B,EAAO/9B,MAAMyhD,WAAa,SAC1B,MAAMg4E,EAAgB,CAClBzrG,eAAgBgqE,EAAc0gC,EAAgBlvH,aAAekvH,EAAgBnvH,OAC7EukB,cAAeiQ,EAAO6V,WAAW,KAAM,CAAE+kB,OAAO,IAChD5qC,SAAUyrG,GAEVV,IACAW,EAAcxrG,WAAa6qG,GAE/B,MAAMxF,EAAcx6F,EAAKpL,OAAO+rG,GAC1BjB,EAAclF,EAOpB,OANAA,EAAYn1G,QACPsG,MAAK,KACNsZ,EAAO/9B,MAAMyhD,WAAa,GAjDzB3oB,GAIDqgG,GACAA,GAAqBO,EAAAA,EAAAA,IAAiB5gG,EAAMpM,GA6C3B,IAEhB3G,MAAMizG,GACJ,KAAMvF,EAAAA,EAAAA,IAAkB+E,EACnC,GAIA,CACIM,EACAQ,EACA7+D,EACA3hC,EACAk/D,EACAwhC,EACAzrG,IAEJ,MAAMnD,GAAUu/F,EAAAA,EAAAA,cAAY,KACxB,MAAQt5D,QAAS9yB,GAAWu7F,EAKxBv7F,IACAA,EAAO9B,MAAQ,EACf8B,EAAO7B,OAAS,EACpB,GACD,CAACo9F,IAEJ,OADAvP,EAAAA,EAAAA,YAAU,IAAMn/F,GAAS,CAACA,KAClBmpG,EAAAA,EAAAA,KAAK,SAAU,CAAEzpF,UAAW,GAAFjnC,OAAKw1H,EAAU,YAAYhsC,IAAK,MAAOrjE,IAAK6qG,EAAUgF,EAAWC,GAAgBt5H,MAAO,CAClHk1F,QAAS,QACTz0F,WAAY,QACbgtB,SAAU2rG,GAAkBrF,EAAAA,EAAAA,KAAK8D,EAAY,CAAC,GAAK,MAC9D,CCjGe,SAAS8B,IACpB,MAAM7B,EAAcJ,KACpBxH,EAAAA,EAAAA,GAAU4H,EAAa,gCACvB,MAAM,WAAEe,EAAYK,gBAAiBC,EAAsBH,cAAeC,EAAkB,KAAEngG,EAAI,OAAExM,EAAM,MAAEI,GAAWorG,GACvH5H,EAAAA,EAAAA,GAAUp3F,EAAM,4DAChB,MAAO8gG,EAAUC,IAAe3H,EAAAA,EAAAA,MACxBvrH,MAAOsgD,EAAKplD,MAAOi4H,GAAaF,EA6BxC,MAAM7rG,GAAW86F,EAAAA,EAAAA,UAAQ,IAAM/vF,EAAKrM,YAAY,CAAEC,QAAOC,SAAUL,KAAW,CAACwM,EAAMxM,EAAQI,KAI7Fq9F,EAAAA,EAAAA,YAHA,WACI8P,EAAY,CAAEz7H,KAAM,SACxB,GACoB,CAAC06B,EAAM+gG,EAAa9rG,KA2BxCg8F,EAAAA,EAAAA,YA1BA,WACI,IAAKjxF,EACD,OAEJ,MAAMw6F,GAAcC,EAAAA,EAAAA,GAAgBz6F,EAAKjI,mBAoBzC,OAnBAyiG,EAAYn1G,QACPsG,MAAMwK,IACQ,IAAI8hG,EAAAA,EAAM/rC,YAAYlsD,EAAK7M,WAAY6M,EAAK5M,MAEtD05D,OAAO32D,EAAclB,GACrBtJ,MAAMs1G,IAEP,KAAMA,aAAmBC,YACrB,MAAM,IAAIr4H,MAAM,sCAEpBk4H,EAAY,CAAEz7H,KAAM,UAAWuI,MAAOozH,GAAU,IAE/Ch0G,OAAOlkB,IACRg4H,EAAY,CAAEz7H,KAAM,SAAUyD,SAAQ,GACxC,IAEDkkB,OAAOlkB,IACRg4H,EAAY,CAAEz7H,KAAM,SAAUyD,SAAQ,IAEnC,KAAM4xH,EAAAA,EAAAA,IAAkBH,EACnC,GACqB,CAACx6F,EAAM+gG,EAAa9rG,KACzCg8F,EAAAA,EAAAA,YAAU,UACM/mH,IAARikD,KAGQ,IAARA,EA5DCnuB,GAIDqgG,GACAA,GAAqBO,EAAAA,EAAAA,IAAiB5gG,EAAMpM,IAO3CotG,KAIDP,EAAAA,EAAAA,IAAkBO,KAGtBhM,GAAQ,EAAOgM,EAAS/1H,YACpBk1H,GACAA,EAAmBa,KA2CN,GAIrB,CAAC7yE,IAaD,MAAM,MAAEhrB,EAAK,OAAEC,GAAWnO,EAC1B,OAAQgmG,EAAAA,EAAAA,KAAK,MAAO,CAAEzpF,UAAW,GAAFjnC,OAAKw1H,EAAU,SAE1CrvG,IAAMA,GAfV,SAA6BopB,GACzB,IAAKA,IAAYqU,EACb,OAGCrU,EAAQqnF,mBACTrnF,EAAQrxC,YAAY0lD,GAExB,MAAM,MAAEhrB,EAAK,OAAEC,GAAWnO,EAC1Bk5B,EAAI1c,aAAa,QAAS,GAAFlnC,OAAK44B,IAC7BgrB,EAAI1c,aAAa,SAAU,GAAFlnC,OAAK64B,GAClC,CAIkBg+F,CAAoB1wG,GAAMxpB,MAAO,CAC3Ck1F,QAAS,QACTzmB,gBAAiB,QACjB0rD,SAAU,SACVl+F,QACAC,SACAz7B,WAAY,SAExB,CClGe,SAAS25H,IACpB,MAAMtC,EAAcJ,KACpBxH,EAAAA,EAAAA,GAAU4H,EAAa,gCACvB,MAAM,mBAAES,EAAkB,eAAE8B,EAAc,iBAAEC,EAAgB,uBAAEC,EAAsB,yBAAEC,EAAwB,KAAE1hG,EAAI,UAAErN,EAAS,WAAEnC,EAAU,OAAEgD,EAAM,MAAEI,GAAWorG,GAChK5H,EAAAA,EAAAA,GAAUp3F,EAAM,mEAChB,MAAO2hG,EAAkBC,IAAuBxI,EAAAA,EAAAA,MACxCvrH,MAAO7G,EAAa+B,MAAO84H,GAAqBF,EAClDG,GAAerR,EAAAA,EAAAA,QAAO,MACtBsR,GAAatR,EAAAA,EAAAA,aAAOvmH,GAC1B8qH,EAA4G,IAApGvrE,SAASrhD,OAAO8kC,iBAAiBtmC,SAAS4B,MAAM6kC,iBAAiB,0BAA2B,IAAW,yGA6B/G4jF,EAAAA,EAAAA,YAHA,WACI2Q,EAAoB,CAAEt8H,KAAM,SAChC,GAC4B,CAAC06B,EAAM4hG,KAgBnC3Q,EAAAA,EAAAA,YAfA,WACI,IAAKjxF,EACD,OAEJ,MAAMw6F,GAAcC,EAAAA,EAAAA,GAAgBz6F,EAAKrH,kBACnC+mG,EAAclF,EAQpB,OAPAA,EAAYn1G,QACPsG,MAAMq2G,IACPJ,EAAoB,CAAEt8H,KAAM,UAAWuI,MAAOm0H,GAAkB,IAE/D/0G,OAAOlkB,IACR64H,EAAoB,CAAEt8H,KAAM,SAAUyD,SAAQ,IAE3C,KAAM4xH,EAAAA,EAAAA,IAAkB+E,EACnC,GAC2B,CAAC1/F,EAAM4hG,KAClC3Q,EAAAA,EAAAA,YAAU,UACc/mH,IAAhBlD,KAGgB,IAAhBA,EA7CCA,GAIDw6H,GACAA,EAAiBx6H,GAOhB66H,IAIL7M,GAAQ,EAAO6M,EAAiB52H,YAC5Bs2H,GACAA,EAAeM,IA+BJ,GAInB,CAAC76H,IAID,MAAMo5H,GAAkB/O,EAAAA,EAAAA,cAAY,KAC5BqQ,GACAA,GACJ,GACD,CAACA,IAIExB,GAAgB7O,EAAAA,EAAAA,cAAatoH,IAC/BisH,GAAQ,EAAOjsH,EAAMkC,YACjBw2H,GACAA,EAAuB14H,EAC3B,GACD,CAAC04H,IAeJ,MAAMxsG,GAAW86F,EAAAA,EAAAA,UAAQ,IAAM/vF,EAAKrM,YAAY,CAAEC,QAAOC,SAAUL,KAAW,CAACwM,EAAMxM,EAAQI,IA0D7F,OAVAquG,EAAAA,EAAAA,kBA/CA,WACI,IAAKjiG,IAASh5B,EACV,OAEJ,MAAQ+wD,QAASpU,GAAUm+E,EAC3B,IAAKn+E,EACD,OAEJA,EAAMu+E,UAAY,GAClB,MAAMhxC,EAAoBlxD,EAAK5H,kBAAkB,CAAEC,sBAAsB,IACnEmS,EAAa,CACf+X,UAAWoB,EACXutC,oBACAj8D,YAEEulG,EAAcvC,EAAAA,EAAMqI,gBAAgB91F,GACpCk1F,EAAclF,EA6BpB,OA5BAA,EAAYn1G,QACPsG,MAAK,KACN,MAAM6D,EAAM5oB,SAASG,cAAc,OACnCyoB,EAAIgiB,UAAY,eAChBmS,EAAM5R,OAAOviB,GACbuyG,EAAWhqE,QAAUvoC,EACrB,MAAM2yG,EAAgBx+E,EAAM81D,iBAAiB,yBAC7C,GAAIgmB,EAAoB,CACpB,IAAI9xB,EAAQ,EACZ3mG,EAAY0xB,MAAMyrF,SAAQ,CAACv2E,EAAMw0F,KAC7B,IAlIpB,SAAoBx0F,GAChB,MAAO,QAASA,CACpB,CAgIyBy0F,CAAWz0F,GACZ,OAEJ,MAAMqjD,EAAQkxC,EAAcx0B,GAC5B,IAAK1c,EACD,OAEJ,MAAMiV,EAAUu5B,EAAmB/xH,OAAO4rB,OAAO,CAAE3G,YAC/CnC,aACA4xG,aAAax0F,IACjBqjD,EAAMixC,UAAYh8B,EAClByH,GAAS//D,EAAK9gC,KAAO8gC,EAAK2kD,OAAS,EAAI,CAAC,GAEhD,CAEA6tC,GAAiB,IAEhBnzG,MAAMizG,GACJ,KAAMvF,EAAAA,EAAAA,IAAkB+E,EACnC,GACiC,CAC7BD,EACAS,EACAE,EACApgG,EACArN,EACAnC,EACAxpB,EACAiuB,KAIJgmG,EAAAA,EAAAA,KAAK,MAAO,CAAEzpF,WAAW0pF,EAAAA,EAAAA,GAAK,+BAAgC,aAAcoH,UAnE5E,WACI,MAAM9yG,EAAMuyG,EAAWhqE,QAClBvoC,GAGLA,EAAIue,UAAU/F,OAAO,SACzB,EA6DkGu6F,YA1ElG,WACI,MAAM/yG,EAAMuyG,EAAWhqE,QAClBvoC,GAGLA,EAAIue,UAAUxW,IAAI,SACtB,EAoE4H7G,IAAKoxG,GACrI,gBC5Ke,SAASU,IACpB,OAAO3D,EAAAA,EAAAA,YAAWzD,EAAAA,EACtB,CCQe,SAASloB,IACpB,MAAMuvB,EAAkBD,IAClBxD,EAAcJ,KACpBxH,EAAAA,EAAAA,GAAU4H,EAAa,gCACvB,MAAMc,EAAcpyH,OAAO4rB,OAAO5rB,OAAO4rB,OAAO,CAAC,EAAGmpG,GAAkBzD,IAChE,mBAAE//B,EAAkB,YAAEF,EAAa2jC,sBAAuBC,EAA4BC,wBAAyBC,EAA8BC,6BAA8BC,EAAmCC,+BAAgCC,EAAmC,KAAEjjG,EAAI,IAAEw5F,EAAG,YAAEt6B,EAAW,OAAE1rE,EAAM,MAAEI,EAAQ,GAAOksG,GACxU1I,EAAAA,EAAAA,GAAUoC,EAAK,oIACfpC,EAAAA,EAAAA,GAAUp3F,EAAM,mEAChBo3F,EAAAA,EAAAA,GAAUr4B,EAAa,yEACvB,MAAOmkC,EAAkBC,IAAuB/J,EAAAA,EAAAA,MACxCvrH,MAAOwlG,EAAatqG,MAAOq6H,GAAqBF,EAClDpB,GAAerR,EAAAA,EAAAA,QAAO,MAC5BuE,EAAkH,IAA1GvrE,SAASrhD,OAAO8kC,iBAAiBtmC,SAAS4B,MAAM6kC,iBAAiB,gCAAiC,IAAW,gHAuBrH4jF,EAAAA,EAAAA,YAHA,WACIkS,EAAoB,CAAE79H,KAAM,SAChC,GAC4B,CAAC69H,EAAqBnjG,KAkBlDixF,EAAAA,EAAAA,YAjBA,WACI,IAAKjxF,EACD,OAEJ,MAAMw6F,GAAcC,EAAAA,EAAAA,GAAgBz6F,EAAK7L,kBACnCurG,EAAclF,EAQpB,OAPAA,EAAYn1G,QACPsG,MAAM03G,IACPF,EAAoB,CAAE79H,KAAM,UAAWuI,MAAOw1H,GAAkB,IAE/Dp2G,OAAOlkB,IACRo6H,EAAoB,CAAE79H,KAAM,SAAUyD,SAAQ,IAE3C,MACH4xH,EAAAA,EAAAA,IAAkB+E,EAAY,CAEtC,GAC2B,CAACyD,EAAqBnjG,EAAMk/D,KACvD+xB,EAAAA,EAAAA,YAAU,UACc/mH,IAAhBmpG,KAGgB,IAAhBA,EA5CCA,GAIDwvB,GACAA,EAA6BxvB,GAI5B+vB,IAILpO,GAAQ,EAAOoO,EAAiBn4H,YAC5B03H,GACAA,EAA2BS,IAiChB,GAInB,CAAC/vB,IAYD,MAAMp+E,GAAW86F,EAAAA,EAAAA,UAAQ,IAAM/vF,EAAKrM,YAAY,CAAEC,QAAOC,SAAUL,KAAW,CAACwM,EAAMxM,EAAQI,IA+C7F,OAJAq9F,EAAAA,EAAAA,YA1CA,WACI,IAAKuI,IAAQx5F,IAAS++D,IAAgBsU,EAClC,OAEJ,MAAQt7C,QAASpU,GAAUm+E,EAC3B,IAAKn+E,EACD,OAEJ,MAAM2/E,EAAiBruG,EAASsU,MAAM,CAAEvV,UAAU,IAC5CuvG,EAA4B,CAC9BrtC,qBAAsB,KACtB7gE,oBAAqB,KACrBuV,IAAK+Y,EACL7W,KAAM,KACN9M,OACA/K,SAAUquG,GAERE,EAAmB,CACrBnwB,cACApjF,kBAAmBupG,EAAIvpG,kBACvB2a,IAAK+Y,EAELq7C,gBAAiB,KACjBC,qBACAF,cACA/+D,OACAk/D,cACAjqE,SAAUquG,GAEd3/E,EAAMu+E,UAAY,GAClB,IACI,IAAIjK,EAAAA,EAAM/kB,gBAAgBqwB,GAA2B3uG,OAAO4uG,GA1C5DP,GACAA,GA4CJ,CACA,MAAOl6H,IA1CX,SAAuBA,GACnBisH,GAAQ,EAAO,GAAFzqH,OAAKxB,IACdg6H,GACAA,EAAkCh6H,EAE1C,CAsCQm3H,CAAcn3H,EAClB,CACA,MAAO,MAGX,GAIA,CAACsqG,EAAapU,EAAoBF,EAAa/+D,EAAMk/D,EAAajqE,KAC1DgmG,EAAAA,EAAAA,KAAK,MAAO,CAAEzpF,WAAW0pF,EAAAA,EAAAA,GAAK,+BAAgC,mBAAoBxqG,IAAKoxG,GACnG,CCzIA,IAAI9J,EAAkC,SAAU3hE,EAAGxuD,GAC/C,IAAIyc,EAAI,CAAC,EACT,IAAK,IAAIvC,KAAKs0C,EAAO3oD,OAAOoR,UAAUmhB,eAAehf,KAAKo1C,EAAGt0C,IAAMla,EAAEu3E,QAAQr9D,GAAK,IAC9EuC,EAAEvC,GAAKs0C,EAAEt0C,IACb,GAAS,MAALs0C,GAAqD,oBAAjC3oD,OAAOo2G,sBACtB,KAAI93G,EAAI,EAAb,IAAgB+V,EAAIrU,OAAOo2G,sBAAsBztD,GAAIrqD,EAAI+V,EAAE9X,OAAQ+B,IAC3DnE,EAAEu3E,QAAQr9D,EAAE/V,IAAM,GAAK0B,OAAOoR,UAAU6lG,qBAAqB1jG,KAAKo1C,EAAGt0C,EAAE/V,MACvEsY,EAAEvC,EAAE/V,IAAMqqD,EAAEt0C,EAAE/V,IAF4B,CAItD,OAAOsY,CACX,EAkBA,MAAMm/G,EAAe,EAMN,SAASC,EAAK7e,GACzB,MAAM4d,EAAkBD,IAClB1C,EAAcpyH,OAAO4rB,OAAO5rB,OAAO4rB,OAAO,CAAC,EAAGmpG,GAAkB5d,IAChE,WAAEkb,EAAa,kBAAiB,8BAAE4D,GAAgC,EAAI,iBAAE3D,EAAgB,UAAEO,EAAS,SAAE5rG,EAAQ,UAAE6c,EAAWoyF,eAAgBC,EAAc,mBAAEpE,EAAkB,iBAAE99D,EAAgB,MAAE54D,EAAQ,2BAA0B,OAAEq6B,EAAM,SAAEstF,EAAQ,QAAE0H,EAAU,qBAAe,OAAEC,EAAS,qBAAsBqK,sBAAuBC,EAA4BC,wBAAyBC,EAA8B5D,qBAAsBC,EAA2BC,uBAAwBC,EAA6BmC,eAAgBuC,EAAqBtC,iBAAkBuC,EAAuBxL,YAAaC,EAAkBE,cAAeC,EAAoBmK,6BAA8BC,EAAmCC,+BAAgCC,EAAqC/C,cAAeC,EAAoBC,gBAAiBC,EAAsBoB,uBAAwBuC,EAA6BtC,yBAA0BuC,EAA+BtxG,UAAWuxG,EAAgB1zG,WAAY2zG,EAAe,IAAE3K,EAAG,aAAEc,EAAc8J,sBAAuBC,IAA6B,EAAI,YAAEnlC,IAAc,EAAK,WAAE85B,GAAa,SAAUsH,gBAAiBgE,IAAuB,EAAM9wG,OAAQ+wG,GAAa3wG,MAAO4wG,GAAaf,EAAY,eAAElJ,GAAc,MAAEp3F,IAAU28F,EAAa7G,GAAajB,EAAO8H,EAAa,CAAC,aAAc,gCAAiC,mBAAoB,YAAa,WAAY,YAAa,iBAAkB,qBAAsB,mBAAoB,QAAS,SAAU,WAAY,UAAW,SAAU,wBAAyB,0BAA2B,uBAAwB,yBAA0B,iBAAkB,mBAAoB,cAAe,gBAAiB,+BAAgC,iCAAkC,gBAAiB,kBAAmB,yBAA0B,2BAA4B,YAAa,aAAc,MAAO,eAAgB,wBAAyB,cAAe,aAAc,kBAAmB,SAAU,QAAS,iBAAkB,WAC7+D2E,GAAWC,KAAgBtL,EAAAA,EAAAA,MAC1BvrH,MAAOmyB,GAAMj3B,MAAO47H,IAAcF,GACpCG,IAAcnU,EAAAA,EAAAA,QAAO,OAC3B2G,EAAAA,EAAAA,GAAUoC,EAAK,yHACf,MAAM7mG,IAAYkyG,EAAAA,EAAAA,IAAWV,GAAmBA,EAAkB,EAAuB,OAAnBD,QAA8C,IAAnBA,EAA4BA,EAAiB,KACxI1zG,GAAiC,OAApB2zG,QAAgD,IAApBA,EAA6BA,GAAmBU,EAAAA,EAAAA,IAAWX,GAAkBA,EAAiB,EAAI,KAC3I1wG,GAAyB,OAAhB+wG,SAAwC,IAAhBA,GAAyBA,GAAevkG,GAAOA,GAAKxM,OAAS,KAC9FI,IAAQm8F,EAAAA,EAAAA,UAAQ,KAClB,IAAK/vF,GACD,OAAO,KAGX,IAAI8kG,EAAY,EAEhB,MAAMC,EAAkC,OAAfP,SAAsC,IAAfA,GAAwBA,GAAaf,EAErF,GAAItgG,IAASC,EAAQ,CACjB,MAAMnO,EAAW+K,GAAKrM,YAAY,CAAEC,MAAO,EAAGC,SAAUL,KACpD2P,GACA2hG,EAAY3hG,GAAQlO,EAASkO,MAExBC,IACL0hG,EAAY1hG,EAASnO,EAASmO,OAEtC,CACA,OAAO2hG,EAAmBD,CAAS,GACpC,CAAC1hG,EAAQpD,GAAMxM,GAAQgxG,GAAYrhG,MAYtC8tF,EAAAA,EAAAA,YAXA,WACI,MAAO,MACE4T,EAAAA,EAAAA,IAAWlyG,KAIZgxG,GAAiCpJ,IACjCA,GAAe5nG,GACnB,CAER,GACgB,CAACgxG,EAA+BnK,EAAK7mG,GAAW4nG,MAoChEtJ,EAAAA,EAAAA,YAHA,WACIyT,GAAa,CAAEp/H,KAAM,SACzB,GACqB,CAACo/H,GAAclL,EAAK7mG,MAgBzCs+F,EAAAA,EAAAA,YAfA,WACI,IAAKuI,IAAQhpG,GACT,OAEJ,MAAMgqG,GAAcC,EAAAA,EAAAA,GAAgBjB,EAAIjpG,QAAQC,KAC1CkvG,EAAclF,EAQpB,OAPAA,EAAYn1G,QACPsG,MAAMq5G,IACPN,GAAa,CAAEp/H,KAAM,UAAWuI,MAAOm3H,GAAW,IAEjD/3G,OAAOlkB,IACR27H,GAAa,CAAEp/H,KAAM,SAAUyD,SAAQ,IAEpC,KAAM4xH,EAAAA,EAAAA,IAAkB+E,EACnC,GACoB,CAACgF,GAAclL,EAAK7mG,GAAWnC,GAAY8pG,KAC/DrJ,EAAAA,EAAAA,YAAU,UACO/mH,IAAT81B,MAGS,IAATA,GArDR,WACI,GAAI24F,EAAoB,CACpB,IAAK34F,KAASpM,GAEV,OAEJ+kG,GAAmBiI,EAAAA,EAAAA,IAAiB5gG,GAAMpM,IAC9C,CACA,GAAI+vG,GAAiCrJ,EAAc,CAC/C,KAAKuK,EAAAA,EAAAA,IAAWlyG,MAAeiyG,GAAY7sE,QAEvC,OAEJuiE,EAAa3nG,GAAWiyG,GAAY7sE,QACxC,CACJ,CA0CI2gE,GArCKiM,KAIL3P,GAAQ,EAAO2P,GAAU15H,YACrButH,GACAA,EAAiBmM,KA+BN,GAInB,CAAC3kG,GAAMpM,KACP,MAAMonG,IAAejL,EAAAA,EAAAA,UAAQ,IAE7B/vF,KAAQ6kG,EAAAA,EAAAA,IAAWlyG,KAAcnC,KAAcq0G,EAAAA,EAAAA,IAAWrxG,MAAWqxG,EAAAA,EAAAA,IAAWjxG,IAC1E,CACEmsG,aACAC,mBACAP,qBACA99D,mBACA+gE,sBAAuBC,EACvBC,wBAAyBC,EACzB5D,qBAAsBC,EACtBC,uBAAwBC,EACxBmC,eAAgBuC,EAChBtC,iBAAkBuC,EAClBjB,6BAA8BC,EAC9BC,+BAAgCC,EAChC/C,cAAeC,EACfC,gBAAiBC,EACjBoB,uBAAwBuC,EACxBtC,yBAA0BuC,EAC1BjkG,QACArN,aACAnC,cACA0uE,eACAohC,gBAAiBgE,GACjB9wG,UACAI,UAEF,MAAM,CACRmsG,EACAC,EACAP,EACA99D,EACAghE,EACAE,EACA3D,EACAE,EACA0E,EACAC,EACAhB,EACAE,EACA9C,EACAE,EACA2D,EACAC,EACAjkG,GACArN,GACAnC,GACA0uE,GACAolC,GACA9wG,GACAI,KAEEgiG,IAAa7F,EAAAA,EAAAA,UAAQ,KAAM2F,EAAAA,EAAAA,IAAeuD,IAAY,IAAMj5F,GAAQpM,IAAQgtG,EAAAA,EAAAA,IAAiB5gG,GAAMpM,SAAS1pB,EAAa81B,MAAO,CAACi5F,GAAYj5F,GAAMpM,KACnJqxG,GAAU,GAAH16H,OAAMooB,GAAS,KAAApoB,OAAIqpB,GAAK,KAAArpB,OAAIipB,IACnC0xG,GAAiB,GAAH36H,OAAMooB,GAAS,KAAApoB,OAAIipB,IACvC,SAAS2xG,KACL,OAAQnM,IACJ,IAAK,SAED,OADA5B,EAAAA,EAAAA,GAAUyM,EAAgB,sEACnB5I,EAAAA,EAAAA,KAAK4I,EAAgB,CAAC,EAAG,GAAFt5H,OAAK06H,GAAO,YAE9C,IAAK,OACD,OAAO,KACX,IAAK,MACD,OAAOhK,EAAAA,EAAAA,KAAK4F,EAAS,CAAC,EAAG,GAAFt2H,OAAK26H,GAAc,SAE9C,QACI,OAAOjK,EAAAA,EAAAA,KAAK4E,EAAY,CAAEU,UAAWA,GAAa,GAAFh2H,OAAK06H,GAAO,YAExE,CAgCA,OAAQhK,EAAAA,EAAAA,KAAK,MAAOvtH,OAAO4rB,OAAO,CAAEkY,WAAW0pF,EAAAA,EAAAA,GAAK6E,EAAYvuF,GAAY,mBAAoBhhB,GAAYE,IAAK6qG,EAAU7K,EAAUkU,IAAc19H,MAAO,CAClJ,iBAAoB,GAAHqD,OAAMqpB,IACvB+hD,gBAAiBqqD,GAAoB,QACrC54H,SAAU,WACV6vC,SAAU,cACVC,UAAW,gBACV0+E,GAAY,CAAEjhG,SAjBdnE,GAGO,OAARgpG,QAAyBtvH,IAAT81B,IAA+B,OAATA,IAC9Bi7F,EAAAA,EAAAA,KAAKE,EAAAA,EAAS,CAAE71H,KAAM,UAAWqvB,SAA6B,oBAAZyjG,EAAyBA,IAAYA,KAEvF,IAARoB,IAA0B,IAATx5F,IACVi7F,EAAAA,EAAAA,KAAKE,EAAAA,EAAS,CAAE71H,KAAM,QAASqvB,SAA2B,oBAAV5rB,EAAuBA,IAAUA,KAVpFq8H,EAAAA,EAAAA,MAAMtG,EAAYzD,SAAU,CAAExtH,MAAOmtH,GAAcrmG,SAAU,CAACwwG,KAhBjEb,IAGErJ,EAAAA,EAAAA,KAAKqG,EAAW,CAAC,EAAG,GAAF/2H,OAAK06H,GAAO,UAF1B,KAKNZ,IAOEpJ,EAAAA,EAAAA,KAAK/nB,EAAiB,CAAC,EAAG,GAAF3oG,OAAK06H,GAAO,iBANhC,KAS0HtwG,MAI1HsmG,EAAAA,EAAAA,KAAKE,EAAAA,EAAS,CAAE71H,KAAM,UAAWqvB,SAA4B,oBAAX0jG,EAAwBA,IAAWA,MAiBxG,gEC3PA,MACA,EAD0CgN,gECA1C,SAASxU,EAAQp0C,EAAOzjC,GACpB,OAAQA,EAAO1zC,MACX,IAAK,UACD,MAAO,CAAEuI,MAAOmrC,EAAOnrC,MAAO9E,WAAOmB,GACzC,IAAK,SACD,MAAO,CAAE2D,OAAO,EAAO9E,MAAOiwC,EAAOjwC,OACzC,IAAK,QACD,MAAO,CAAE8E,WAAO3D,EAAWnB,WAAOmB,GACtC,QACI,OAAOuyE,EAEnB,CACe,SAAS28C,IACpB,OAAOxI,EAAAA,EAAAA,YAAYC,EAAU,CAAEhjH,WAAO3D,EAAWnB,WAAOmB,GAC5D,8KCVO,MAAM+vH,EAAgC,qBAAbrzH,SAInB0+H,EAAoBrL,GAA0C,UAA7B7xH,OAAOolB,SAAS5iB,SAcvD,SAASi6H,EAAWU,GACvB,OATG,SAAmBA,GACtB,MAA2B,qBAAbA,CAClB,CAOW9Y,CAAU8Y,IAA0B,OAAbA,CAClC,CAcO,SAASp9G,EAAco9G,GAC1B,OAAOA,aAAoB1kG,WAC/B,CAMO,SAASq5F,EAAOqL,GAEnB,OADAnO,EAAAA,EAAAA,GAAU6C,EAAW,oDACdsL,aAAoB5oG,IAC/B,CAMO,SAASm9F,EAAUyL,GACtB,OA1BG,SAAkBA,GACrB,MAA2B,kBAAbA,CAClB,CAwBWC,CAASD,IAAa,SAASt8H,KAAKs8H,EAC/C,CACO,SAASxL,EAAoB0L,IAChCrO,EAAAA,EAAAA,GAAU0C,EAAU2L,GAAU,qBAC9B,MAAOC,EAAgB,GAAIC,EAAa,IAAMF,EAAQvgI,MAAM,KAE5D,OAAmC,IADnBwgI,EAAcxgI,MAAM,KACxBk6E,QAAQ,UACTnpB,KAAK0vE,GAET12H,SAAS02H,EACpB,CACO,SAAS1F,IACZ,OAAQhG,GAAa7xH,OAAOu5D,kBAAqB,CACrD,CACA,MAAMikE,EAA8B,sGAC7B,SAAS5L,IACZhF,GAASsQ,EAAmB,uFAAF/6H,OAAyFq7H,GACvH,CAIO,SAASjL,EAAkB+E,GAC1BA,GAAeA,EAAY7lG,QAC3B6lG,EAAY7lG,QACpB,CACO,SAAS+mG,EAAiB5gG,EAAMpM,GAyBnC,OAxBAlmB,OAAO6Q,eAAeyhB,EAAM,QAAS,CACjCzyB,GAAAA,GACI,OAAOqR,KAAK8U,KAAK,GAAKE,CAC1B,EACAnV,cAAc,IAElB/Q,OAAO6Q,eAAeyhB,EAAM,SAAU,CAClCzyB,GAAAA,GACI,OAAOqR,KAAK8U,KAAK,GAAKE,CAC1B,EACAnV,cAAc,IAElB/Q,OAAO6Q,eAAeyhB,EAAM,gBAAiB,CACzCzyB,GAAAA,GACI,OAAOqR,KAAK8U,KAAK,EACrB,EACAjV,cAAc,IAElB/Q,OAAO6Q,eAAeyhB,EAAM,iBAAkB,CAC1CzyB,GAAAA,GACI,OAAOqR,KAAK8U,KAAK,EACrB,EACAjV,cAAc,IAEXuhB,CACX,CACO,SAASygG,EAAkB13H,GAC9B,MAAsB,gCAAfA,EAAM3D,IACjB,CACO,SAAS+0H,EAAat1H,GACzB,OAAO,IAAIygB,SAAQ,CAACC,EAASC,KACzB,MAAMuT,EAAS,IAAIyjB,WACnBzjB,EAAO4jB,OAAS,KACZ,IAAK5jB,EAAO6jB,OACR,OAAOp3B,EAAO,IAAI3c,MAAM,gCAE5B0c,EAAQwT,EAAO6jB,OAAO,EAE1B7jB,EAAO8jB,QAAWrhB,IACd,IAAKA,EAAMqT,OACP,OAAOrpB,EAAO,IAAI3c,MAAM,gCAE5B,MAAM,MAAEE,GAAUyyB,EAAMqT,OACxB,IAAK9lC,EACD,OAAOyc,EAAO,IAAI3c,MAAM,gCAE5B,OAAQE,EAAM8F,MACV,KAAK9F,EAAM88H,cACP,OAAOrgH,EAAO,IAAI3c,MAAM,gDAC5B,KAAKE,EAAMiqH,aACP,OAAOxtG,EAAO,IAAI3c,MAAM,gDAC5B,KAAKE,EAAMgqH,UACP,OAAOvtG,EAAO,IAAI3c,MAAM,yCAC5B,QACI,OAAO2c,EAAO,IAAI3c,MAAM,gCAChC,EAEJkwB,EAAO+sG,kBAAkBjhI,EAAK,GAEtC","sources":["../node_modules/attr-accept/dist/es/index.js","../node_modules/copy-to-clipboard/index.js","../pdfjs-dist/build/pdf/webpack/universalModuleDefinition","../pdfjs-dist/build/pdf/src/shared/util.js","../pdfjs-dist/build/pdf/src/display/api.js","../pdfjs-dist/build/pdf/src/display/annotation_storage.js","../pdfjs-dist/build/pdf/src/display/editor/editor.js","../pdfjs-dist/build/pdf/src/display/editor/tools.js","../pdfjs-dist/build/pdf/src/display/display_utils.js","../pdfjs-dist/build/pdf/src/display/base_factory.js","../pdfjs-dist/build/pdf/src/shared/murmurhash3.js","../pdfjs-dist/build/pdf/src/display/font_loader.js","../pdfjs-dist/build/pdf/src/display/node_utils.js","../pdfjs-dist/build/pdf/src/display/canvas.js","../pdfjs-dist/build/pdf/src/display/pattern_helper.js","../pdfjs-dist/build/pdf/src/shared/image_utils.js","../pdfjs-dist/build/pdf/src/display/worker_options.js","../pdfjs-dist/build/pdf/src/shared/message_handler.js","../pdfjs-dist/build/pdf/src/display/metadata.js","../pdfjs-dist/build/pdf/src/display/optional_content_config.js","../pdfjs-dist/build/pdf/src/display/transport_stream.js","../pdfjs-dist/build/pdf/src/display/fetch_stream.js","../pdfjs-dist/build/pdf/src/display/network_utils.js","../pdfjs-dist/build/pdf/src/display/content_disposition.js","../pdfjs-dist/build/pdf/src/display/network.js","../pdfjs-dist/build/pdf/src/display/node_stream.js","../pdfjs-dist/build/pdf/src/display/svg.js","../pdfjs-dist/build/pdf/src/display/xfa_text.js","../pdfjs-dist/build/pdf/src/display/text_layer.js","../pdfjs-dist/build/pdf/src/display/editor/annotation_editor_layer.js","../pdfjs-dist/build/pdf/src/display/editor/freetext.js","../pdfjs-dist/build/pdf/src/display/annotation_layer.js","../pdfjs-dist/build/pdf/src/shared/scripting_utils.js","../pdfjs-dist/build/pdf/web/l10n_utils.js","../pdfjs-dist/build/pdf/src/display/xfa_layer.js","../pdfjs-dist/build/pdf/src/display/editor/ink.js","../pdfjs-dist/build/pdf/src/display/editor/stamp.js","../pdfjs-dist/build/pdf/webpack/bootstrap","../pdfjs-dist/build/pdf/src/pdf.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/file-selector/src/file.ts","../node_modules/file-selector/src/file-selector.ts","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","../node_modules/toggle-selection/index.js","../node_modules/warning/warning.js","../node_modules/@babel/runtime/helpers/assertClassBrand.js","../node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js","../node_modules/@babel/runtime/helpers/classPrivateFieldGet2.js","../node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js","../node_modules/@babel/runtime/helpers/classPrivateFieldSet2.js","../node_modules/@babel/runtime/helpers/classPrivateGetter.js","../node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/make-cancellable-promise/dist/esm/index.js","../node_modules/make-event-props/dist/esm/index.js","../node_modules/dequal/dist/index.mjs","../node_modules/react-pdf/dist/esm/LinkService.js","../node_modules/react-pdf/dist/esm/PasswordResponses.js","../node_modules/react-pdf/dist/esm/Document.js","../node_modules/react-pdf/dist/esm/DocumentContext.js","../node_modules/react-pdf/dist/esm/Message.js","../node_modules/merge-refs/dist/esm/index.js","../node_modules/react-pdf/dist/esm/PageContext.js","../node_modules/react-pdf/dist/esm/shared/constants.js","../node_modules/react-pdf/dist/esm/shared/structTreeUtils.js","../node_modules/react-pdf/dist/esm/StructTreeItem.js","../node_modules/react-pdf/dist/esm/shared/hooks/usePageContext.js","../node_modules/react-pdf/dist/esm/StructTree.js","../node_modules/react-pdf/dist/esm/Page/PageCanvas.js","../node_modules/react-pdf/dist/esm/Page/PageSVG.js","../node_modules/react-pdf/dist/esm/Page/TextLayer.js","../node_modules/react-pdf/dist/esm/shared/hooks/useDocumentContext.js","../node_modules/react-pdf/dist/esm/Page/AnnotationLayer.js","../node_modules/react-pdf/dist/esm/Page.js","../node_modules/react-pdf/dist/esm/pdfjs.js","../node_modules/react-pdf/dist/esm/shared/hooks/useResolver.js","../node_modules/react-pdf/dist/esm/shared/utils.js"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = root.pdfjsLib = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(globalThis, () => {\nreturn ","/* Copyright 2012 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/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6; // Ten megabytes.\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\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 OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n STAMP: 13,\n INK: 15,\n};\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};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\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};\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};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\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};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\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};\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};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\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};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n // PLEASE NOTE: We purposely keep any removed operators commented out, since\n // re-numbering the list would risk breaking third-party users.\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 // beginAnnotations: 78,\n // endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n // paintJpegXObject: 82,\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};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\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}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\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}\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}\n\nfunction string32(value) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\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}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n\n static get platform() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof navigator === \"undefined\"\n ) {\n return shadow(this, \"platform\", { isWin: false, isMac: false });\n }\n return shadow(this, \"platform\", {\n isWin: navigator.platform.includes(\"Win\"),\n isMac: navigator.platform.includes(\"Mac\"),\n });\n }\n\n static get isCSSRoundSupported() {\n return shadow(\n this,\n \"isCSSRoundSupported\",\n globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\")\n );\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\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[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\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\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 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,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 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,\n 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,\n 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,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v?.byteLength !== undefined;\n}\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}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\nclass PromiseCapability {\n #settled = false;\n\n constructor() {\n /**\n * @type {Promise} The Promise object.\n */\n this.promise = new Promise((resolve, reject) => {\n /**\n * @type {function} Fulfills the Promise.\n */\n this.resolve = data => {\n this.#settled = true;\n resolve(data);\n };\n\n /**\n * @type {function} Rejects the Promise.\n */\n this.reject = reason => {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(reason instanceof Error, 'Expected valid \"reason\" argument.');\n }\n this.#settled = true;\n reject(reason);\n };\n });\n }\n\n /**\n * @type {boolean} If the Promise has been fulfilled/rejected.\n */\n get settled() {\n return this.#settled;\n }\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n // In order to generate the following regex:\n // - create a PDF containing all the chars in the range 0000-FFFF with\n // a NFKC which is different of the char.\n // - copy and paste all those chars and get the ones where NFKC is\n // required.\n // It appears that most the chars here contain some ligatures.\n NormalizeRegex =\n /([\\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) => {\n return p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2);\n });\n}\n\nfunction getUuid() {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\")\n ) {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto?.getRandomValues === \"function\"\n ) {\n crypto.getRandomValues(buf);\n } else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMode,\n AnnotationPrefix,\n AnnotationReplyType,\n AnnotationType,\n assert,\n BaseException,\n BASELINE_FACTOR,\n bytesToString,\n CMapCompressionType,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FormatError,\n getModificationDate,\n getUuid,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isNodeJS,\n LINE_DESCENT_FACTOR,\n LINE_FACTOR,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n normalizeUnicode,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2012 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\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isNodeJS,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n PasswordException,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationStorage,\n PrintAnnotationStorage,\n SerializableEmpty,\n} from \"./annotation_storage.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n isValidFetchUrl,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory,\n} from \"display-node_utils\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { PDFFetchStream } from \"display-fetch_stream\";\nimport { PDFNetworkStream } from \"display-network\";\nimport { PDFNodeStream } from \"display-node_stream\";\nimport { SVGGraphics } from \"display-svg\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\nconst DELAYED_CLEANUP_TIMEOUT = 5000; // ms\n\nconst DefaultCanvasFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultFilterFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeFilterFactory\n : DOMFilterFactory;\nconst DefaultStandardFontDataFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n * Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n * NOTE: If TypedArrays are used they will generally be transferred to the\n * worker-thread. This will help reduce main-thread memory usage, however\n * it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n * `OffscreenCanvas` in the worker. Primarily used to improve performance of\n * image conversion/rendering.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\n * know when an image must be resized (uses `OffscreenCanvas` in the worker).\n * If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object} [filterFactory] - A factory instance that will be used\n * to create SVG filters when rendering some images on the main canvas.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = { url: src };\n } else if (isArrayBuffer(src)) {\n src = { data: src };\n }\n }\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n const task = new PDFDocumentLoadingTask();\n const { docId } = task;\n\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 =\n src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize =\n Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n ? src.rangeChunkSize\n : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n const docBaseUrl =\n typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n ? src.docBaseUrl\n : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl =\n typeof src.standardFontDataUrl === \"string\"\n ? src.standardFontDataUrl\n : null;\n const StandardFontDataFactory =\n src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize =\n Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n ? src.maxImageSize\n : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported =\n typeof src.isOffscreenCanvasSupported === \"boolean\"\n ? src.isOffscreenCanvasSupported\n : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n ? src.canvasMaxAreaInBytes\n : -1;\n const disableFontFace =\n 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\n // Parameters whose default values depend on other parameters.\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts =\n typeof src.useSystemFonts === \"boolean\"\n ? src.useSystemFonts\n : !isNodeJS && !disableFontFace;\n const useWorkerFetch =\n typeof src.useWorkerFetch === \"boolean\"\n ? src.useWorkerFetch\n : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (CMapReaderFactory === DOMCMapReaderFactory &&\n StandardFontDataFactory === DOMStandardFontDataFactory &&\n cMapUrl &&\n standardFontDataUrl &&\n isValidFetchUrl(cMapUrl, document.baseURI) &&\n isValidFetchUrl(standardFontDataUrl, document.baseURI));\n const canvasFactory =\n src.canvasFactory || new DefaultCanvasFactory({ ownerDocument });\n const filterFactory =\n src.filterFactory || new DefaultFilterFactory({ docId, ownerDocument });\n\n // Parameters only intended for development/testing purposes.\n const styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? src.styleElement\n : null;\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(verbosity);\n\n // Ensure that the various factories can be initialized, when necessary,\n // since the user may provide *custom* ones.\n const transportFactory = {\n canvasFactory,\n filterFactory,\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked,\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl,\n });\n }\n\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const fetchDocParams = {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\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 canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\n },\n };\n const transportParams = {\n ignoreErrors,\n isEvalSupported,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement,\n };\n\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length,\n initialData: rangeTransport.initialData,\n progressiveDone: rangeTransport.progressiveDone,\n contentDispositionFilename:\n rangeTransport.contentDispositionFilename,\n disableRange,\n disableStream,\n },\n rangeTransport\n );\n } else if (!data) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: createPDFNetworkStream\");\n }\n const createPDFNetworkStream = params => {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS\n ) {\n return new PDFNodeStream(params);\n }\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n transportParams,\n transportFactory\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @returns {Promise} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n source,\n source.data ? [source.data.buffer] : null\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\nfunction getUrlProp(val) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return null; // The 'url' is unused with `PDFDataRangeTransport`.\n }\n if (val instanceof URL) {\n return val.href;\n }\n try {\n // The full path is required in the 'url' field.\n return new URL(val, window.location).href;\n } catch {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof val === \"string\"\n ) {\n return val; // Use the url as-is in Node.js environments.\n }\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n}\n\nfunction getDataProp(val) {\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n val instanceof Buffer // eslint-disable-line no-undef\n ) {\n throw new Error(\n \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n );\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n // Use the data as-is when it's already a Uint8Array that completely\n // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n // issues when transferring it to the worker-thread.\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if ((typeof val === \"object\" && !isNaN(val?.length)) || isArrayBuffer(val)) {\n return new Uint8Array(val);\n }\n throw new Error(\n \"Invalid PDF binary data: either TypedArray, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = new PromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise} A promise that is resolved when destruction is\n * completed.\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\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array|null} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = new PromiseCapability();\n }\n\n /**\n * @param {function} listener\n */\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n /**\n * @param {number} begin\n * @param {Uint8Array|null} chunk\n */\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n /**\n * @param {number} loaded\n * @param {number|undefined} total\n */\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n /**\n * @param {Uint8Array|null} chunk\n */\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n /**\n * @param {number} begin\n * @param {number} end\n */\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"getJavaScript\", {\n value: () => {\n deprecated(\n \"`PDFDocumentProxy.getJavaScript`, \" +\n \"please use `PDFDocumentProxy.getJSActions` instead.\"\n );\n return this.getJSActions().then(js => {\n if (!js) {\n return js;\n }\n const jsArr = [];\n for (const name in js) {\n jsArr.push(...js[name]);\n }\n return jsArr;\n });\n },\n });\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => {\n return this._transport.getXFADatasets();\n },\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () => {\n return this._transport.getXRefPrevValue();\n },\n });\n Object.defineProperty(this, \"getAnnotArray\", {\n value: pageIndex => {\n return this._transport.getAnnotArray(pageIndex);\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree.\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array} items\n */\n\n /**\n * @returns {Promise>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} containing the raw data of the PDF document.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with an\n * {Array} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n * @property {boolean} [disableNormalization] - When true the text is *not*\n * normalized in the worker-thread. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {CanvasRenderingContext2D} canvasContext - A 2D context of a DOM\n * Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\n * to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n\n #pendingCleanup = false;\n\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 /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\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 scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n return this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\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 }) {\n this._stats?.time(\"Overall\");\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render...\n this.#pendingCleanup = false;\n // ... and ensure that a delayed cleanup is always aborted.\n this.#abortDelayedCleanup();\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\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\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = new PromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup immediately once rendering has finished.\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(/* delayed = */ !intentPrint);\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n this._stats?.timeEnd(\"Rendering\");\n this._stats?.timeEnd(\"Overall\");\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\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\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n } = {}) {\n if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\"Not implemented: getOperatorList\");\n }\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage,\n /* isOpList = */ true\n );\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\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = new PromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\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\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\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 this.#abortDelayedCleanup();\n\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(/* delayed = */ false);\n\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @param {boolean} [delayed] - Delay the cleanup, to e.g. improve zooming\n * performance in documents with large images.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(/* delayed = */ false);\n }, DELAYED_CLEANUP_TIMEOUT);\n\n return false;\n }\n for (const { renderTasks, operatorList } 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\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n this._stats?.timeEnd(\"Page Request\");\n\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n intentState.displayReadyCapability?.resolve(transparency);\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\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\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(/* delayed = */ true);\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n const { map, transfers } = annotationStorageSerializable;\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n },\n transfers\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(/* delayed = */ true);\n }\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 };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n // Above, we prevent the total delay from becoming arbitrarily large.\n delay += reason.extraDelay;\n }\n\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({ intentState, reason, force: true });\n }, delay);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\n * otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n #listeners = new Set();\n\n #deferred = Promise.resolve();\n\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(\n obj,\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"SKIP_BABEL || TESTING\")) &&\n transfer\n ? { transfer }\n : null\n ),\n };\n\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n\n terminate() {\n this.#listeners.clear();\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Worker} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts;\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\n this._readyCapability = new PromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) &&\n port\n ) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _initializeFromPort\");\n }\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let { workerSrc } = PDFWorker;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n const worker =\n typeof PDFJSDev === \"undefined\" &&\n !workerSrc.endsWith(\"/build/pdf.worker.js\")\n ? new Worker(workerSrc, { type: \"module\" })\n : new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: fromPort\");\n }\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\n \"PDFWorker.fromPort - the worker is being destroyed.\\n\" +\n \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\"\n );\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n PDFWorkerUtil.fallbackWorkerSrc !== null\n ) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) ||\n // Control character (DEL) of C0, and C1 controls.\n (code > 126 && code < 160) ||\n // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) ||\n // Noncharacters.\n (code > 64975 && code < 65008) /* eslint-disable no-bitwise */ ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 /* eslint-enable no-bitwise */ ||\n // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract} Parent\n *\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | undefined | null | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(key: Key) => CompileData[Key]} getData\n * Get data from the key/value store.\n * @property {(key: Key, value?: CompileData[Key]) => void} setData\n * Set data into the key/value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * @param value\n * Markdown to parse.\n * @param encoding\n * Character encoding for when `value` is `Buffer`.\n * @param options\n * Configuration.\n * @returns\n * mdast tree.\n */\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n * ((value: Value, options?: Options | null | undefined) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding | Options | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n // @ts-expect-error: `listItem` is most definitely defined, TS...\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Set data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @param {CompileData[Key]} [value]\n * New value.\n * @returns {void}\n * Nothing.\n */\n function setData(key, value) {\n data[key] = value\n }\n\n /**\n * Get data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @returns {CompileData[Key]}\n * Value.\n */\n function getData(key) {\n return data[key]\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Node} create\n * Create a node.\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {void}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @template {Node} Kind\n * Node type.\n * @this {CompileContext}\n * Context.\n * @param {Kind} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {Kind}\n * The given node.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n // @ts-expect-error: `end` will be patched later.\n node.position = {\n start: point(token.start)\n }\n return node\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {Node}\n * The closed node.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n return node\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n let tail = node.children[node.children.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n // @ts-expect-error: we’ll add `end` later.\n tail.position = {\n start: point(token.start)\n }\n // @ts-expect-error: Assume `parent` accepts `text`.\n node.children.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n setData('inReference', true)\n if (node.type === 'link') {\n /** @type {Array} */\n // @ts-expect-error: Assume static phrasing content.\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n setData('inReference')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {HTML} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n if (key === 'canContainEols') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'transforms') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'enter' || key === 'exit') {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?] | void[], string, Root>}\n */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction} */\n const parser = (doc) => {\n // Assume options.\n const settings = /** @type {Options} */ (this.data('settings'))\n\n return fromMarkdown(\n doc,\n Object.assign({}, settings, options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n })\n )\n }\n\n Object.assign(this, {Parser: parser})\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array} Test\n * Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n * Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | void}\n * Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n * Node type.\n * @typedef {Kind['type'] | Partial | TestFunctionPredicate | Array | TestFunctionPredicate>} PredicateTest\n * Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback TestFunctionPredicate\n * Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n * Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback AssertPredicate\n * Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @param test\n * A check for a specific node.\n * @param index\n * The node’s position in its parent.\n * @param parent\n * The node’s parent.\n * @returns\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n /**\n * @type {(\n * (() => false) &\n * ((node: unknown, test: PredicateTest, index: number, parent: Parent, context?: unknown) => node is Kind) &\n * ((node: unknown, test: PredicateTest, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n * ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n * ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function is(node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns\n * An assertion.\n */\nexport const convert =\n /**\n * @type {(\n * ((test: PredicateTest) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {Array} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n 'type' in node &&\n // @ts-expect-error: fine.\n Boolean(check.call(this, node, ...parameters))\n )\n }\n}\n\nfunction ok() {\n return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * @typedef {boolean | 'skip'} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * Tree type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {Visitor, Check>, Extract, Parent>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visitParents =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {Node} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n /** @type {Record} */\n // @ts-expect-error: hush\n const value = node && typeof node === 'object' ? node : {}\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n }\n )\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {ActionTuple}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n * Node type.\n * @template {Node} Child\n * Node type.\n * @typedef {(\n * Ancestor extends Parent\n * ? Child extends Ancestor['children'][number]\n * ? Ancestor\n * : never\n * : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends Node ? number | null : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n * Node type.\n * @template {Parent} Ancestor\n * Parent type.\n * @typedef {Visitor>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n * @typedef {(\n * BuildVisitorFromMatch<\n * import('unist-util-visit-parents/complex-types.js').Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n * Node type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {(\n * BuildVisitorFromDescendants<\n * import('unist-util-visit-parents/complex-types.js').InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visit =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * Node.\n * @returns {Position}\n * Position.\n */\nexport function position(node) {\n return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start' | 'end'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * @returns {Point}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n // To do: next major: don’t return points when invalid.\n return {\n // @ts-expect-error: in practice, null is allowed.\n line: point.line || null,\n // @ts-expect-error: in practice, null is allowed.\n column: point.column || null,\n // @ts-expect-error: in practice, null is allowed.\n offset: point.offset > -1 ? point.offset : null\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Definition} Definition\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback GetDefinition\n * Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n * Identifier of definition.\n * @returns {Definition | null}\n * Definition corresponding to `identifier` or `null`.\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} tree\n * Tree to check.\n * @returns {GetDefinition}\n * Getter.\n */\nexport function definitions(tree) {\n /** @type {Record} */\n const cache = Object.create(null)\n\n if (!tree || !tree.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(tree, 'definition', (definition) => {\n const id = clean(definition.identifier)\n if (id && !own.call(cache, id)) {\n cache[id] = definition\n }\n })\n\n return definition\n\n /** @type {GetDefinition} */\n function definition(identifier) {\n const id = clean(identifier)\n // To do: next major: return `undefined` when not found.\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('hast').Element} Element\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {FootnoteReference} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnoteReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n const index = state.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n if (index === -1) {\n state.footnoteOrder.push(id)\n state.footnoteCounts[id] = 1\n counter = state.footnoteOrder.length\n } else {\n state.footnoteCounts[id]++\n counter = index + 1\n }\n\n const reuseCounter = state.footnoteCounts[id]\n\n /** @type {Element} */\n const link = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + state.clobberPrefix + 'fn-' + safeId,\n id:\n state.clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: ['footnote-label']\n },\n children: [{type: 'text', value: String(counter)}]\n }\n state.patch(node, link)\n\n /** @type {Element} */\n const sup = {\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [link]\n }\n state.patch(node, sup)\n return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {References} node\n * Reference node (image, link).\n * @returns {ElementContent | Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return {type: 'text', value: '![' + node.alt + suffix}\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} Parents\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | null | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === undefined || spread === null\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {footnote} from './footnote.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n footnote,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n // To do: next major: return `undefined`.\n return null\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n const lang = node.lang ? node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/) : null\n /** @type {Properties} */\n const properties = {}\n\n if (lang) {\n properties.className = ['language-' + lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../state.js').State} State\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n// To do: when both:\n// * \n// * \n// …are archived, remove this (also from mdast).\n// These inline notes are not used in GFM.\n\n/**\n * Turn an mdast `footnote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Footnote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnote(state, node) {\n  const footnoteById = state.footnoteById\n  let no = 1\n\n  while (no in footnoteById) no++\n\n  const identifier = String(no)\n\n  footnoteById[identifier] = {\n    type: 'footnoteDefinition',\n    identifier,\n    children: [{type: 'paragraph', children: node.children}],\n    position: node.position\n  }\n\n  return footnoteReference(state, {\n    type: 'footnoteReference',\n    identifier,\n    position: node.position\n  })\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').HTML} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Raw | Element | null}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.dangerous) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  // To do: next major: return `undefined`.\n  return null\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {ElementContent | Array}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {ElementContent | Array}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastRoot | HastElement}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start.line && end.line) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} Parents\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(node, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastText | HastElement}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract} MdastParents\n *\n * @typedef EmbeddedHastFields\n *   hast fields.\n * @property {string | null | undefined} [hName]\n *   Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n *   Generate an element with these properties instead.\n * @property {Array | null | undefined} [hChildren]\n *   Generate an element with this content instead.\n *\n * @typedef {Record & EmbeddedHastFields} MdastData\n *   mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n *   mdast node with embedded hast data.\n *\n * @typedef PointLike\n *   Point-like value.\n * @property {number | null | undefined} [line]\n *   Line.\n * @property {number | null | undefined} [column]\n *   Column.\n * @property {number | null | undefined} [offset]\n *   Offset.\n *\n * @typedef PositionLike\n *   Position-like value.\n * @property {PointLike | null | undefined} [start]\n *   Point-like value.\n * @property {PointLike | null | undefined} [end]\n *   Point-like value.\n *\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n *   Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n *   hast node.\n *\n * @callback HFunctionProps\n *   Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {HastProperties} props\n *   Properties.\n * @param {Array | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @callback HFunctionNoProps\n *   Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {Array | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @typedef HFields\n *   Info on `state`.\n * @property {boolean} dangerous\n *   Whether HTML is allowed.\n * @property {string} clobberPrefix\n *   Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n *   Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n *   HTML used for the footnote label.\n * @property {HastProperties} footnoteLabelProperties\n *   Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n *   Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n *   Definition cache.\n * @property {Record} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Array} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Record} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {Handler} unknownHandler\n *   Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n *   Copy a node’s positional info.\n * @property {(from: MdastNodes, to: Type) => Type | HastElement} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array | null | undefined} one\n *   Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array} all\n *   Transform the children of an mdast parent to hast.\n * @property {(nodes: Array, loose?: boolean | null | undefined) => Array} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n *   Like `state` but lower-level and usable on non-elements.\n *   Deprecated: use `patch` and `applyData`.\n * @property {Array} passThrough\n *   List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` attribute on footnotes to prevent it from\n *   *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n *   Label to use from backreferences back to their footnote call (affects\n *   screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (note that `id: 'footnote-label'`\n *   is always added as footnote calls use it with `aria-describedby` to\n *   provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes.\n * @property {Array | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes.\n *\n * @typedef {Record} Handlers\n *   Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n *   Info passed around.\n */\n\nimport {visit} from 'unist-util-visit'\nimport {position, pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || {}\n  const dangerous = settings.allowDangerousHtml || false\n  /** @type {Record} */\n  const footnoteById = {}\n\n  // To do: next major: add `options` to state, remove:\n  // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n  // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n  // `unknownHandler`.\n\n  // To do: next major: move to `state.options.allowDangerousHtml`.\n  state.dangerous = dangerous\n  // To do: next major: move to `state.options`.\n  state.clobberPrefix =\n    settings.clobberPrefix === undefined || settings.clobberPrefix === null\n      ? 'user-content-'\n      : settings.clobberPrefix\n  // To do: next major: move to `state.options`.\n  state.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  // To do: next major: move to `state.options`.\n  state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n  // To do: next major: move to `state.options`.\n  state.unknownHandler = settings.unknownHandler\n  // To do: next major: move to `state.options`.\n  state.passThrough = settings.passThrough\n\n  state.handlers = {...handlers, ...settings.handlers}\n\n  // To do: next major: replace utility with `definitionById` object, so we\n  // only walk once (as we need footnotes too).\n  state.definition = definitions(tree)\n  state.footnoteById = footnoteById\n  /** @type {Array} */\n  state.footnoteOrder = []\n  /** @type {Record} */\n  state.footnoteCounts = {}\n\n  state.patch = patch\n  state.applyData = applyData\n  state.one = oneBound\n  state.all = allBound\n  state.wrap = wrap\n  // To do: next major: remove `augment`.\n  state.augment = augment\n\n  visit(tree, 'footnoteDefinition', (definition) => {\n    const id = String(definition.identifier).toUpperCase()\n\n    // Mimick CM behavior of link definitions.\n    // See: .\n    if (!own.call(footnoteById, id)) {\n      footnoteById[id] = definition\n    }\n  })\n\n  // @ts-expect-error Hush, it’s fine!\n  return state\n\n  /**\n   * Finalise the created `right`, a hast node, from `left`, an mdast node.\n   *\n   * @param {MdastNodeWithData | PositionLike | null | undefined} left\n   * @param {HastElementContent} right\n   * @returns {HastElementContent}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function augment(left, right) {\n    // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n    if (left && 'data' in left && left.data) {\n      /** @type {MdastData} */\n      const data = left.data\n\n      if (data.hName) {\n        if (right.type !== 'element') {\n          right = {\n            type: 'element',\n            tagName: '',\n            properties: {},\n            children: []\n          }\n        }\n\n        right.tagName = data.hName\n      }\n\n      if (right.type === 'element' && data.hProperties) {\n        right.properties = {...right.properties, ...data.hProperties}\n      }\n\n      if ('children' in right && right.children && data.hChildren) {\n        right.children = data.hChildren\n      }\n    }\n\n    if (left) {\n      const ctx = 'type' in left ? left : {position: left}\n\n      if (!generated(ctx)) {\n        // @ts-expect-error: fine.\n        right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n      }\n    }\n\n    return right\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Create an element for `node`.\n   *\n   * @type {HFunctionProps}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function state(node, tagName, props, children) {\n    if (Array.isArray(props)) {\n      children = props\n      props = {}\n    }\n\n    // @ts-expect-error augmenting an element yields an element.\n    return augment(node, {\n      type: 'element',\n      tagName,\n      properties: props || {},\n      children: children || []\n    })\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | null | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {HastElementContent | Array | null | undefined}\n   *   Resulting hast node.\n   */\n  function oneBound(node, parent) {\n    // @ts-expect-error: that’s a state :)\n    return one(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array}\n   *   Resulting hast nodes.\n   */\n  function allBound(parent) {\n    // @ts-expect-error: that’s a state :)\n    return all(state, parent)\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {void}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {Type | HastElement}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {Type | HastElement} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent is likely to keep the content around (otherwise: pass\n      // `hChildren`).\n      else {\n        result = {\n          type: 'element',\n          tagName: hName,\n          properties: {},\n          children: []\n        }\n\n        // To do: next major: take the children from the `root`, or inject the\n        // raw/text/comment or so into the element?\n        // if ('children' in node) {\n        //   // @ts-expect-error: assume `children` are allowed in elements.\n        //   result.children = node.children\n        // } else {\n        //   // @ts-expect-error: assume `node` is allowed in elements.\n        //   result.children.push(node)\n        // }\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      result.properties = {...result.properties, ...hProperties}\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      // @ts-expect-error: assume valid children are defined.\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   mdast node.\n * @param {MdastParents | null | undefined} [parent]\n *   Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n *   Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nexport function one(state, node, parent) {\n  const type = node && node.type\n\n  // Fail on non-nodes.\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n\n  if (own.call(state.handlers, type)) {\n    return state.handlers[type](state, node, parent)\n  }\n\n  if (state.passThrough && state.passThrough.includes(type)) {\n    // To do: next major: deep clone.\n    // @ts-expect-error: types of passed through nodes are expected to be added manually.\n    return 'children' in node ? {...node, children: all(state, node)} : node\n  }\n\n  if (state.unknownHandler) {\n    return state.unknownHandler(state, node, parent)\n  }\n\n  return defaultUnknownHandler(state, node)\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} parent\n *   mdast node to compile\n * @returns {Array}\n *   Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n  /** @type {Array} */\n  const values = []\n\n  if ('children' in parent) {\n    const nodes = parent.children\n    let index = -1\n    while (++index < nodes.length) {\n      const result = one(state, nodes[index], parent)\n\n      // To do: see if we van clean this? Can we merge texts?\n      if (result) {\n        if (index && nodes[index - 1].type === 'break') {\n          if (!Array.isArray(result) && result.type === 'text') {\n            result.value = result.value.replace(/^\\s+/, '')\n          }\n\n          if (!Array.isArray(result) && result.type === 'element') {\n            const head = result.children[0]\n\n            if (head && head.type === 'text') {\n              head.value = head.value.replace(/^\\s+/, '')\n            }\n          }\n        }\n\n        if (Array.isArray(result)) {\n          values.push(...result)\n        } else {\n          values.push(result)\n        }\n      }\n    }\n  }\n\n  return values\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastText | HastElement}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastText | HastElement} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: all(state, node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n *   Node type.\n * @param {Array} nodes\n *   List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n *   Whether to add line endings at start and end.\n * @returns {Array}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n","/**\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef NodeLike\n * @property {PositionLike | null | undefined} [position]\n */\n\n/**\n * Check if `node` is generated.\n *\n * @param {NodeLike | null | undefined} [node]\n *   Node to check.\n * @returns {boolean}\n *   Whether `node` is generated (does not have positional info).\n */\nexport function generated(node) {\n  return (\n    !node ||\n    !node.position ||\n    !node.position.start ||\n    !node.position.start.line ||\n    !node.position.start.column ||\n    !node.position.end ||\n    !node.position.end.line ||\n    !node.position.end.column\n  )\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Root} MdastRoot\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n */\n\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * 

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {HastNodes | null | undefined}\n * hast tree.\n */\n// To do: next major: always return a single `root`.\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, null)\n const foot = footer(state)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n // To do: next major: always return root?\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\nexport function footer(state) {\n /** @type {Array} */\n const listItems = []\n let index = -1\n\n while (++index < state.footnoteOrder.length) {\n const def = state.footnoteById[state.footnoteOrder[index]]\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let referenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n\n while (++referenceIndex <= state.footnoteCounts[id]) {\n /** @type {Element} */\n const backReference = {\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n state.clobberPrefix +\n 'fnref-' +\n safeId +\n (referenceIndex > 1 ? '-' + referenceIndex : ''),\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: state.footnoteBackLabel\n },\n children: [{type: 'text', value: '↩'}]\n }\n\n if (referenceIndex > 1) {\n backReference.children.push({\n type: 'element',\n tagName: 'sup',\n children: [{type: 'text', value: String(referenceIndex)}]\n })\n }\n\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n backReferences.push(backReference)\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: state.clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: state.footnoteLabelTagName,\n properties: {\n // To do: use structured clone.\n ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: state.footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * * If a destination processor is given, that processor runs with a new HTML\n * (hast) tree (bridge-mode).\n * As the given processor runs with a hast tree, and rehype plugins support\n * hast, that means rehype plugins can be used with the given processor.\n * The hast tree is discarded in the end.\n * It’s highly unlikely that you want to do this.\n * * The common case is to not pass a destination processor, in which case the\n * current processor continues running with a new HTML (hast) tree\n * (mutate-mode).\n * As the current processor continues with a hast tree, and rehype plugins\n * support hast, that means rehype plugins can be used after\n * `remark-rehype`.\n * It’s likely that this is what you want to do.\n *\n * @param destination\n * Optional unified processor.\n * @param options\n * Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n (\n function (destination, options) {\n return destination && 'run' in destination\n ? bridge(destination, options)\n : mutate(destination || options)\n }\n )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n return (node, file, next) => {\n destination.run(toHast(node, options), file, (error) => {\n next(error)\n })\n }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n return (node) => toHast(node, options)\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) ||\n // Control character (DEL) of C0, and C1 controls.\n (code > 126 && code < 160) ||\n // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) ||\n // Noncharacters.\n (code > 64975 && code < 65008) /* eslint-disable no-bitwise */ ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 /* eslint-enable no-bitwise */ ||\n // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract} Parent\n *\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | undefined | null | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(key: Key) => CompileData[Key]} getData\n * Get data from the key/value store.\n * @property {(key: Key, value?: CompileData[Key]) => void} setData\n * Set data into the key/value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * @param value\n * Markdown to parse.\n * @param encoding\n * Character encoding for when `value` is `Buffer`.\n * @param options\n * Configuration.\n * @returns\n * mdast tree.\n */\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n * ((value: Value, options?: Options | null | undefined) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding | Options | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n // @ts-expect-error: `listItem` is most definitely defined, TS...\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Set data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @param {CompileData[Key]} [value]\n * New value.\n * @returns {void}\n * Nothing.\n */\n function setData(key, value) {\n data[key] = value\n }\n\n /**\n * Get data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @returns {CompileData[Key]}\n * Value.\n */\n function getData(key) {\n return data[key]\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Node} create\n * Create a node.\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {void}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @template {Node} Kind\n * Node type.\n * @this {CompileContext}\n * Context.\n * @param {Kind} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {Kind}\n * The given node.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n // @ts-expect-error: `end` will be patched later.\n node.position = {\n start: point(token.start)\n }\n return node\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {Node}\n * The closed node.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n return node\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n let tail = node.children[node.children.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n // @ts-expect-error: we’ll add `end` later.\n tail.position = {\n start: point(token.start)\n }\n // @ts-expect-error: Assume `parent` accepts `text`.\n node.children.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n setData('inReference', true)\n if (node.type === 'link') {\n /** @type {Array} */\n // @ts-expect-error: Assume static phrasing content.\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n setData('inReference')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {HTML} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n if (key === 'canContainEols') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'transforms') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'enter' || key === 'exit') {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?] | void[], string, Root>}\n */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction} */\n const parser = (doc) => {\n // Assume options.\n const settings = /** @type {Options} */ (this.data('settings'))\n\n return fromMarkdown(\n doc,\n Object.assign({}, settings, options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n })\n )\n }\n\n Object.assign(this, {Parser: parser})\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array} Test\n * Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n * Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | void}\n * Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n * Node type.\n * @typedef {Kind['type'] | Partial | TestFunctionPredicate | Array | TestFunctionPredicate>} PredicateTest\n * Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback TestFunctionPredicate\n * Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n * Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback AssertPredicate\n * Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @param test\n * A check for a specific node.\n * @param index\n * The node’s position in its parent.\n * @param parent\n * The node’s parent.\n * @returns\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n /**\n * @type {(\n * (() => false) &\n * ((node: unknown, test: PredicateTest, index: number, parent: Parent, context?: unknown) => node is Kind) &\n * ((node: unknown, test: PredicateTest, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n * ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n * ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function is(node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns\n * An assertion.\n */\nexport const convert =\n /**\n * @type {(\n * ((test: PredicateTest) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {Array} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n 'type' in node &&\n // @ts-expect-error: fine.\n Boolean(check.call(this, node, ...parameters))\n )\n }\n}\n\nfunction ok() {\n return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * @typedef {boolean | 'skip'} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * Tree type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {Visitor, Check>, Extract, Parent>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visitParents =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {Node} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n /** @type {Record} */\n // @ts-expect-error: hush\n const value = node && typeof node === 'object' ? node : {}\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n }\n )\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {ActionTuple}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n * Node type.\n * @template {Node} Child\n * Node type.\n * @typedef {(\n * Ancestor extends Parent\n * ? Child extends Ancestor['children'][number]\n * ? Ancestor\n * : never\n * : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends Node ? number | null : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n * Node type.\n * @template {Parent} Ancestor\n * Parent type.\n * @typedef {Visitor>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n * @typedef {(\n * BuildVisitorFromMatch<\n * import('unist-util-visit-parents/complex-types.js').Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n * Node type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {(\n * BuildVisitorFromDescendants<\n * import('unist-util-visit-parents/complex-types.js').InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visit =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * Node.\n * @returns {Position}\n * Position.\n */\nexport function position(node) {\n return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start' | 'end'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * @returns {Point}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n // To do: next major: don’t return points when invalid.\n return {\n // @ts-expect-error: in practice, null is allowed.\n line: point.line || null,\n // @ts-expect-error: in practice, null is allowed.\n column: point.column || null,\n // @ts-expect-error: in practice, null is allowed.\n offset: point.offset > -1 ? point.offset : null\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Definition} Definition\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback GetDefinition\n * Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n * Identifier of definition.\n * @returns {Definition | null}\n * Definition corresponding to `identifier` or `null`.\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} tree\n * Tree to check.\n * @returns {GetDefinition}\n * Getter.\n */\nexport function definitions(tree) {\n /** @type {Record} */\n const cache = Object.create(null)\n\n if (!tree || !tree.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(tree, 'definition', (definition) => {\n const id = clean(definition.identifier)\n if (id && !own.call(cache, id)) {\n cache[id] = definition\n }\n })\n\n return definition\n\n /** @type {GetDefinition} */\n function definition(identifier) {\n const id = clean(identifier)\n // To do: next major: return `undefined` when not found.\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('hast').Element} Element\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {FootnoteReference} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnoteReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n const index = state.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n if (index === -1) {\n state.footnoteOrder.push(id)\n state.footnoteCounts[id] = 1\n counter = state.footnoteOrder.length\n } else {\n state.footnoteCounts[id]++\n counter = index + 1\n }\n\n const reuseCounter = state.footnoteCounts[id]\n\n /** @type {Element} */\n const link = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + state.clobberPrefix + 'fn-' + safeId,\n id:\n state.clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: ['footnote-label']\n },\n children: [{type: 'text', value: String(counter)}]\n }\n state.patch(node, link)\n\n /** @type {Element} */\n const sup = {\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [link]\n }\n state.patch(node, sup)\n return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {References} node\n * Reference node (image, link).\n * @returns {ElementContent | Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return {type: 'text', value: '![' + node.alt + suffix}\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} Parents\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | null | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === undefined || spread === null\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {footnote} from './footnote.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n footnote,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n // To do: next major: return `undefined`.\n return null\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n const lang = node.lang ? node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/) : null\n /** @type {Properties} */\n const properties = {}\n\n if (lang) {\n properties.className = ['language-' + lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../state.js').State} State\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n// To do: when both:\n// * \n// * \n// …are archived, remove this (also from mdast).\n// These inline notes are not used in GFM.\n\n/**\n * Turn an mdast `footnote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Footnote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnote(state, node) {\n  const footnoteById = state.footnoteById\n  let no = 1\n\n  while (no in footnoteById) no++\n\n  const identifier = String(no)\n\n  footnoteById[identifier] = {\n    type: 'footnoteDefinition',\n    identifier,\n    children: [{type: 'paragraph', children: node.children}],\n    position: node.position\n  }\n\n  return footnoteReference(state, {\n    type: 'footnoteReference',\n    identifier,\n    position: node.position\n  })\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').HTML} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Raw | Element | null}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.dangerous) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  // To do: next major: return `undefined`.\n  return null\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {ElementContent | Array}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {ElementContent | Array}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastRoot | HastElement}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start.line && end.line) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} Parents\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(node, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastText | HastElement}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract} MdastParents\n *\n * @typedef EmbeddedHastFields\n *   hast fields.\n * @property {string | null | undefined} [hName]\n *   Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n *   Generate an element with these properties instead.\n * @property {Array | null | undefined} [hChildren]\n *   Generate an element with this content instead.\n *\n * @typedef {Record & EmbeddedHastFields} MdastData\n *   mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n *   mdast node with embedded hast data.\n *\n * @typedef PointLike\n *   Point-like value.\n * @property {number | null | undefined} [line]\n *   Line.\n * @property {number | null | undefined} [column]\n *   Column.\n * @property {number | null | undefined} [offset]\n *   Offset.\n *\n * @typedef PositionLike\n *   Position-like value.\n * @property {PointLike | null | undefined} [start]\n *   Point-like value.\n * @property {PointLike | null | undefined} [end]\n *   Point-like value.\n *\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n *   Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n *   hast node.\n *\n * @callback HFunctionProps\n *   Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {HastProperties} props\n *   Properties.\n * @param {Array | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @callback HFunctionNoProps\n *   Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {Array | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @typedef HFields\n *   Info on `state`.\n * @property {boolean} dangerous\n *   Whether HTML is allowed.\n * @property {string} clobberPrefix\n *   Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n *   Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n *   HTML used for the footnote label.\n * @property {HastProperties} footnoteLabelProperties\n *   Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n *   Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n *   Definition cache.\n * @property {Record} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Array} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Record} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {Handler} unknownHandler\n *   Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n *   Copy a node’s positional info.\n * @property {(from: MdastNodes, to: Type) => Type | HastElement} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array | null | undefined} one\n *   Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array} all\n *   Transform the children of an mdast parent to hast.\n * @property {(nodes: Array, loose?: boolean | null | undefined) => Array} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n *   Like `state` but lower-level and usable on non-elements.\n *   Deprecated: use `patch` and `applyData`.\n * @property {Array} passThrough\n *   List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` attribute on footnotes to prevent it from\n *   *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n *   Label to use from backreferences back to their footnote call (affects\n *   screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (note that `id: 'footnote-label'`\n *   is always added as footnote calls use it with `aria-describedby` to\n *   provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes.\n * @property {Array | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes.\n *\n * @typedef {Record} Handlers\n *   Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n *   Info passed around.\n */\n\nimport {visit} from 'unist-util-visit'\nimport {position, pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || {}\n  const dangerous = settings.allowDangerousHtml || false\n  /** @type {Record} */\n  const footnoteById = {}\n\n  // To do: next major: add `options` to state, remove:\n  // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n  // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n  // `unknownHandler`.\n\n  // To do: next major: move to `state.options.allowDangerousHtml`.\n  state.dangerous = dangerous\n  // To do: next major: move to `state.options`.\n  state.clobberPrefix =\n    settings.clobberPrefix === undefined || settings.clobberPrefix === null\n      ? 'user-content-'\n      : settings.clobberPrefix\n  // To do: next major: move to `state.options`.\n  state.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  // To do: next major: move to `state.options`.\n  state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n  // To do: next major: move to `state.options`.\n  state.unknownHandler = settings.unknownHandler\n  // To do: next major: move to `state.options`.\n  state.passThrough = settings.passThrough\n\n  state.handlers = {...handlers, ...settings.handlers}\n\n  // To do: next major: replace utility with `definitionById` object, so we\n  // only walk once (as we need footnotes too).\n  state.definition = definitions(tree)\n  state.footnoteById = footnoteById\n  /** @type {Array} */\n  state.footnoteOrder = []\n  /** @type {Record} */\n  state.footnoteCounts = {}\n\n  state.patch = patch\n  state.applyData = applyData\n  state.one = oneBound\n  state.all = allBound\n  state.wrap = wrap\n  // To do: next major: remove `augment`.\n  state.augment = augment\n\n  visit(tree, 'footnoteDefinition', (definition) => {\n    const id = String(definition.identifier).toUpperCase()\n\n    // Mimick CM behavior of link definitions.\n    // See: .\n    if (!own.call(footnoteById, id)) {\n      footnoteById[id] = definition\n    }\n  })\n\n  // @ts-expect-error Hush, it’s fine!\n  return state\n\n  /**\n   * Finalise the created `right`, a hast node, from `left`, an mdast node.\n   *\n   * @param {MdastNodeWithData | PositionLike | null | undefined} left\n   * @param {HastElementContent} right\n   * @returns {HastElementContent}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function augment(left, right) {\n    // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n    if (left && 'data' in left && left.data) {\n      /** @type {MdastData} */\n      const data = left.data\n\n      if (data.hName) {\n        if (right.type !== 'element') {\n          right = {\n            type: 'element',\n            tagName: '',\n            properties: {},\n            children: []\n          }\n        }\n\n        right.tagName = data.hName\n      }\n\n      if (right.type === 'element' && data.hProperties) {\n        right.properties = {...right.properties, ...data.hProperties}\n      }\n\n      if ('children' in right && right.children && data.hChildren) {\n        right.children = data.hChildren\n      }\n    }\n\n    if (left) {\n      const ctx = 'type' in left ? left : {position: left}\n\n      if (!generated(ctx)) {\n        // @ts-expect-error: fine.\n        right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n      }\n    }\n\n    return right\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Create an element for `node`.\n   *\n   * @type {HFunctionProps}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function state(node, tagName, props, children) {\n    if (Array.isArray(props)) {\n      children = props\n      props = {}\n    }\n\n    // @ts-expect-error augmenting an element yields an element.\n    return augment(node, {\n      type: 'element',\n      tagName,\n      properties: props || {},\n      children: children || []\n    })\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | null | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {HastElementContent | Array | null | undefined}\n   *   Resulting hast node.\n   */\n  function oneBound(node, parent) {\n    // @ts-expect-error: that’s a state :)\n    return one(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array}\n   *   Resulting hast nodes.\n   */\n  function allBound(parent) {\n    // @ts-expect-error: that’s a state :)\n    return all(state, parent)\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {void}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {Type | HastElement}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {Type | HastElement} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent is likely to keep the content around (otherwise: pass\n      // `hChildren`).\n      else {\n        result = {\n          type: 'element',\n          tagName: hName,\n          properties: {},\n          children: []\n        }\n\n        // To do: next major: take the children from the `root`, or inject the\n        // raw/text/comment or so into the element?\n        // if ('children' in node) {\n        //   // @ts-expect-error: assume `children` are allowed in elements.\n        //   result.children = node.children\n        // } else {\n        //   // @ts-expect-error: assume `node` is allowed in elements.\n        //   result.children.push(node)\n        // }\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      result.properties = {...result.properties, ...hProperties}\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      // @ts-expect-error: assume valid children are defined.\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   mdast node.\n * @param {MdastParents | null | undefined} [parent]\n *   Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n *   Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nexport function one(state, node, parent) {\n  const type = node && node.type\n\n  // Fail on non-nodes.\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n\n  if (own.call(state.handlers, type)) {\n    return state.handlers[type](state, node, parent)\n  }\n\n  if (state.passThrough && state.passThrough.includes(type)) {\n    // To do: next major: deep clone.\n    // @ts-expect-error: types of passed through nodes are expected to be added manually.\n    return 'children' in node ? {...node, children: all(state, node)} : node\n  }\n\n  if (state.unknownHandler) {\n    return state.unknownHandler(state, node, parent)\n  }\n\n  return defaultUnknownHandler(state, node)\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} parent\n *   mdast node to compile\n * @returns {Array}\n *   Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n  /** @type {Array} */\n  const values = []\n\n  if ('children' in parent) {\n    const nodes = parent.children\n    let index = -1\n    while (++index < nodes.length) {\n      const result = one(state, nodes[index], parent)\n\n      // To do: see if we van clean this? Can we merge texts?\n      if (result) {\n        if (index && nodes[index - 1].type === 'break') {\n          if (!Array.isArray(result) && result.type === 'text') {\n            result.value = result.value.replace(/^\\s+/, '')\n          }\n\n          if (!Array.isArray(result) && result.type === 'element') {\n            const head = result.children[0]\n\n            if (head && head.type === 'text') {\n              head.value = head.value.replace(/^\\s+/, '')\n            }\n          }\n        }\n\n        if (Array.isArray(result)) {\n          values.push(...result)\n        } else {\n          values.push(result)\n        }\n      }\n    }\n  }\n\n  return values\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastText | HastElement}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastText | HastElement} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: all(state, node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n *   Node type.\n * @param {Array} nodes\n *   List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n *   Whether to add line endings at start and end.\n * @returns {Array}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n","/**\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef NodeLike\n * @property {PositionLike | null | undefined} [position]\n */\n\n/**\n * Check if `node` is generated.\n *\n * @param {NodeLike | null | undefined} [node]\n *   Node to check.\n * @returns {boolean}\n *   Whether `node` is generated (does not have positional info).\n */\nexport function generated(node) {\n  return (\n    !node ||\n    !node.position ||\n    !node.position.start ||\n    !node.position.start.line ||\n    !node.position.start.column ||\n    !node.position.end ||\n    !node.position.end.line ||\n    !node.position.end.column\n  )\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Root} MdastRoot\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n */\n\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * 

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {HastNodes | null | undefined}\n * hast tree.\n */\n// To do: next major: always return a single `root`.\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, null)\n const foot = footer(state)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n // To do: next major: always return root?\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\nexport function footer(state) {\n /** @type {Array} */\n const listItems = []\n let index = -1\n\n while (++index < state.footnoteOrder.length) {\n const def = state.footnoteById[state.footnoteOrder[index]]\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let referenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n\n while (++referenceIndex <= state.footnoteCounts[id]) {\n /** @type {Element} */\n const backReference = {\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n state.clobberPrefix +\n 'fnref-' +\n safeId +\n (referenceIndex > 1 ? '-' + referenceIndex : ''),\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: state.footnoteBackLabel\n },\n children: [{type: 'text', value: '↩'}]\n }\n\n if (referenceIndex > 1) {\n backReference.children.push({\n type: 'element',\n tagName: 'sup',\n children: [{type: 'text', value: String(referenceIndex)}]\n })\n }\n\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n backReferences.push(backReference)\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: state.clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: state.footnoteLabelTagName,\n properties: {\n // To do: use structured clone.\n ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: state.footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * * If a destination processor is given, that processor runs with a new HTML\n * (hast) tree (bridge-mode).\n * As the given processor runs with a hast tree, and rehype plugins support\n * hast, that means rehype plugins can be used with the given processor.\n * The hast tree is discarded in the end.\n * It’s highly unlikely that you want to do this.\n * * The common case is to not pass a destination processor, in which case the\n * current processor continues running with a new HTML (hast) tree\n * (mutate-mode).\n * As the current processor continues with a hast tree, and rehype plugins\n * support hast, that means rehype plugins can be used after\n * `remark-rehype`.\n * It’s likely that this is what you want to do.\n *\n * @param destination\n * Optional unified processor.\n * @param options\n * Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n (\n function (destination, options) {\n return destination && 'run' in destination\n ? bridge(destination, options)\n : mutate(destination || options)\n }\n )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n return (node, file, next) => {\n destination.run(toHast(node, options), file, (error) => {\n next(error)\n })\n }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n return (node) => toHast(node, options)\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `
` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `